投稿

4月, 2021の投稿を表示しています

Chrome93のPWA基準へのたぶん一番簡単な対処

chrome系のブラウザでWebページをホームへインストールするための基準が少し厳しくなる。service workerのfetchイベントが空だと現在以下の警告が出る。 Site cannot be installed: Page does not work offline. Starting in Chrome 93, the installability criteria is changing, and this site will not be installable. See https://goo.gle/improved-pwa-offline-detection for more information. https://goo.gle/improved-pwa-offline-detection オフラインに対応していなければ、2021年8月のChrome93からはインストールがブロックされるとのこと。とはいえ完全に動作する必要はなくフォールバックページなどが提供されればいいそうだ。 サーバ通信前提のWebページをオフライン対応するのは現実的ではないので、その方向で回避してみることにする。(オンライン前提のWebページをインストール可能にする必要があるのかというのもあるが、そこは色々な事情があるのだ) 対応 serviceworker.js var _cashVersion = "cashe0.0.0.1" var _offlinePage = '/offline.html' self.addEventListener("install", function(event) { console.log("service worker call install.", event) event.waitUntil( caches.open(_cashVersion) .then(function (cache) { cache.add(_offlinePage); }) ); }) self.addEventListener('fetch

WebページからWindowsアプリを起動する

Windowsでは予めURLスキームを設定しておくことで、Webページ(ブラウザ)からアプリケーションを起動することができる。イントラネット業務アプリの世界で稀に利用されるようなものだったが、近ごろオンラインビデオ会議のクライアントを立ち上げるのによく目にするようになった。 クライアント設定 事前にクライアントとなるWindowsのレジストリに、スキーム名と対応する動作を登録する必要がある。スキーム名を「xxxx」とした場合、レジストリに以下を設定する。 HKEY_CLASSES_ROOT\xxxx 名前 種類 データ (既定) REG_SZ URL:xxx Protocol URL Protocol REG_SZ HKEY_CLASSES_ROOT\xxxx\shell\open\command 名前 種類 データ (既定) REG_SZ example.exe "%1" example.exeの部分に実行したいアプリをコマンドライン形式で記述する。なお起動するアプリは事前にインストールされている必要がある。 Webページからの呼び出し WebページからそのスキームのURLを開かせる。 <a href='xxxx://hogehoge'>start application</a> 開く方法はリンクでもjavascriptでもよい。ただブラウザにブランクページが表示されるので、iframeを設置してその中で開くとよいかもしれない。hogehogeの部分はなんでもよいが、スキームのみ(xxxx://)ではだめなようだ。 URLを開くとブラウザから確認のダイアログが表示される。実行を許可するとレジストリのコマンドが実行される。 情報の受け渡し Webページからアプリへ コマンドライン引数にURLが渡されるので、文字情報であればURLのパスやクエリ式でアプリに情報を渡すことができる。 location.href = "xxxx://start?id=hoge&type=1" ただし通常のURLと同様にURLアンセーフな文字はbase64URLエンコ