MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

拡張機能の呼び出し方法について
https://forums.mozillazine.jp/viewtopic.php?f=26&t=10324
ページ 11

作成者:  breathsnow [ 2010年6月27日(日) 19:11 ]
記事の件名:  拡張機能の呼び出し方法について

こんにちは。

XPCOMで作った拡張機能をWebサーバ上にあるHTMLのボタン押下時に
javascriptを使って呼び出そうとしています。

ローカルであれば
コード:
netscape.security.PrivilegeManager.enablePrivilege()

を使ってインスタンス生成、メソッド呼び出しできるのですが、
下記URLに書かれているように、HTTP経由になると呼び出せません。
http://piro.sakura.ne.jp/latest/blosxom.cgi/webtech/javascript/2006-06-27_unsinged-script.htm

XULオーバーレイにより、Firefoxのメニュー上などにボタンを配置して
拡張機能を呼び出すことができるのは確認しましたが、
呼び出しのトリガーをWebのコンテンツ(HTML)にすることはできないのでしょうか?

アドバイスいただけるとうれしいです。

作成者:  mitsugu [ 2010年6月27日(日) 19:50 ]
記事の件名:  Re: 拡張機能の呼び出し方法について

> 呼び出しのトリガーをWebのコンテンツ(HTML)にすることはできないのでしょうか?
セキュリティ上の理由によりできません。

作成者:  Piro [ 2010年6月27日(日) 22:07 ]
記事の件名:  Re: 拡張機能の呼び出し方法について

グローバルな名前空間に何らかのオブジェクトやコンストラクタ関数を追加することは可能です。

例えばXUL/Migemoというアドオンでは、"migemo"という名前のプロパティをグローバルな名前空間に追加して、"migemo.query()"のような形で他のアドオンやWebページのスクリプトから簡単に機能を呼び出せるようにしています。
http://piro.sakura.ne.jp/xul/_xulmigemo.html#api-usage
これを実現しているコードは以下です。
http://www.cozmixng.org/repos/piro/xulm ... gemoAPI.js

C言語でやる場合は、システムモニターというアドオンに実装例があります。
http://www.clear-code.com/blog/2009/10/20.html
http://git.clear-code.com/xul/extension ... components

nsICategoryManagerに'JavaScript global property'というカテゴリ名でコンポーネントを登録するというのがポイントです。

ただ、この方法で追加した機能で文字列や数値などのプリミティブ値以外を返すと(例えばArrayとか)、戻ってきたオブジェクトのプロパティやメソッドにアクセスしようとした時に、セキュリティのエラーが発生することがあります。上記の例の場合、xmXMigemoAPI.jsの中でnew Array()した配列は、APIを呼び出したWebページのスクリプトからアクセスすると諸々のメソッドを呼べないということになります。

作成者:  breathsnow [ 2010年6月29日(火) 10:48 ]
記事の件名:  Re: 拡張機能の呼び出し方法について

mitsugu様、Piro様、返信ありがとうございます。

その後、調べていたところ、
カスタムDOMイベントを利用する方法を見つけました。

https://developer.mozilla.org/ja/Code_snippets/Interaction_between_privileged_and_non-privileged_pages

http://forums.mozillazine.org/viewtopic.php?p=2955601

この手のアプリケーションはセキュリティの問題が付いて回るので、
承知の上、あわせて継続調査したいと思います。
ありがとうございました。

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/