開発:さて、Macも軽くなったし extension 体験第2日目行きます。
基盤:その後、パッケージ内のHTMLやJavaScriptをURLで参照できるのがわかったということでした。
開発:そう、これです。
https://developer.chrome.com/extensions/manifest/web_accessible_resources
Manifest - Web Accessible Resources
...
These resources would then be available in a webpage via the URL chrome-extension://[PACKAGE ID]/[PATH], which can be generated with the extension.getURL method.
開発:今のところ隠したいリソースも何も無いですから、全開にします。
"web_accessible_resources": [ "*" ]
開発:それで、パッケージのURLはとりあえずこんな風に見えます。
開発:なのでこのパッケージの manifest.json は、chrome-extension://mjfadkidegblhjloojipnmeaginiambn/manifest.json というURLで見えるわけです。
基盤:いっそ、chrome-extension://パッケージ名/ でパッケージのファイル全部が見えると良いですね。
開発:.htacess とか指定したりして。まあまだファイル数も少ないので、index.html を作って参照します。というかこれも、JavaScript で生成すれば良いのですよね。
開発:それで、準備してて気づいたのですが、このURLで参照するHTMLのようなファイルは、パッケージをUpdateしなくても即反映される、というかそのまま使われるようなのです。これは実に全く便利です。
開発:さて、準備もできたし、まずはこの間作ったURLを分解してアンカーをつけるやつからやりますか。
* * *
社長:どんな感じですか。
開発:非常に不思議な現象が起きて難航しましたが、ようやく切り抜けました。
社長:どのような問題が?
開発:HTMLの中で </span> を </spam> とスペルミスしてしまったため、それ以下の表示が適切にされなかった、という問題です。
社長:うーん。それは確かに難しい問題でしたね。
開発:Vivaldi は JavaScript のエラーは指摘してくれますが、HTMLの異常はスルーですからねえ。
* * *
社長:どんな感じですか?
開発:Vivaldi に苦しめられていました。
社長:?
開発:コンテクストメニューを追加するところでエラーが出まして。具体的にはポインタがアンカー上にあった場合のコンテクストメニューを定義しようとしたのですが。これはメニューを登録する時のオプションとして単に"contexts":["link"] と書けば良いはずなのです。ですが、何か型の不整合のエラーだというので散々調べたのですが意味がわからず。それで、はっと思って、Update ではなく、一旦Removeして再ロードしたら通ってしまいました。前にもこれがありました。そういうわけで、これは鉄則だと思います。
VivaldiのextensionのUpdateで意味不明なエラーが出たら、一旦RemoveしてLoadし直すこと。
社長:そういえば、これは Vivaldi に限ったことではなく、ずっと不便だと感じてきた事ですが、右クリックで現在のページに関するメニューを出したい時、たまたまマウスポインタがリンクの上にあるとか、テキストの上にあったりすると、ページに関するメニューが出て来ない。で、ポップアップされたメニューの中に同じタイトルのものがあった場合、例えばPrintとか、ページに対して操作したつもりが、ポインタが指す要素に対する操作になってしまった、という事がしばしばあります。この不便は解消したいですね。
開発:それは、"contexts":["page", "link", "selection"] みたいに、同じメニューを複数のコンテクストに登録する事と、メニューのタイトルに対象を明示することで解消できますね。
開発:あとこれはいまだに意味不明なのですが、肝心の file scheme に対するアクセスがextension に許可されないんです。許可のチェックはしているのに。めっちゃ意味不明です。
開発:フォーラムで聞いてみようと思いますが、今日はなんだか疲れたのでもう寝ます。
社長:そうしましょう。というか、他のブラウザで試してみると良いかもですね。
-- 2020-0616 SatoxITS