スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WebExtensionsのContentScriptsで特定の.jsが動作しない

Chrome(ChromeExtensions)では動くのにFirefox(WebExtensions)では動かないというよくあるパターン。WebAnimationsAPIで四苦八苦したときと同じく、今回もFirefox内蔵のデバッガーとWebページのconsoleどちらにもエラーが表示されないのがとにかく困った。


原因はDynamic importが記述されている.jsファイルの読込みに失敗していることだった。.jsファイルの読込みに失敗すると、それが設定されているルール(manifest.json.content_scriptsに入れるオブジェクト)単位で実行されなくなる。未実装なのだから動かないのは当然なのだが、それにしたって未定義エラーくらいは出して然るべきなのではないか。取りあえず当該部分をtry/catchで覆ってみるがダメで、なんとかパースを乗り切るには eval('import(…)') のように書くしかなかった。しかしそれではFirefoxで部分的に動くようになるものの、Dynamic importが機能するChrome側でESMの読込み完了の検知や返り値の受け取りを諦める羽目になってしまう。しばらく悩んでからDynamic importを使用する.jsファイルだけ別のルールに切り分けることで対処した。同じrun_atで<all_urls>なルールが二つ並んでいるのが気持ち悪いのは我慢しよう。おしまい。

関連記事

コメントの投稿

非公開コメント

すポンサードリンク
最新記事
カテゴリ
DN (57)
CSS (2)
いろいろ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。