Firefox拡張機能はどのようにしてDOM/ウィンドウオブジェクトを読み取ることができますか?つまり、逆:Webページjsへのコンテンツスクリプトアクセス
unsafeWindowオブジェクトを使用して、拡張機能に変数を割り当てたいと思いました。しかし、それは機能しません。unsafeWindowは、contentScriptの外部では定義されていません。
私は他の多くのアプローチを試しましたが、醜いハックの必要性を避けたいと思います。
たとえば、https://addons.mozilla.org/en-US/developers/docs/sdk/1.6/dev-guide/guides/content-scripts/access.htmlは、unsafeWindowが優れたプロキシであると述べています。実際のウィンドウオブジェクトを認識します。 (jQueryなどのライブラリによって変更された場合でも)。しかし、たとえば次のようにunsafeWindowにアクセスしようとすると、次のようになります。var widgets = require( "sdk / widget"); var tabs = require( "sdk / tabs");
var widget = widgets.Widget({
id: "mozilla-link",
label: "Mozilla website",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function() {
tabs.activeTab.attach({
// native implementation of window.confirm will be used
contentScript: "console.log(window.navigator.userAgent);"
});
dump(unsafeWindow.navigator.userAgent);
}
dump(unsafeWindow);
});
Console.logが機能し、SDKコンソールで「info:」を起動します。しかし、ダンプはそうではなく、実際にはそこに参照エラーがあります。私は本当に拡張機能からウィンドウオブジェクトにアクセスする必要があります。では、unsafeWindowはありますか?ウィンドウオブジェクトにアクセスするにはどうすればよいですか?関数は呼び出さないので安全です。