次のコード:サンドボックス `this` FirefoxのWebExtensionコンテンツスクリプトで
(function(local_window) {
local_window.example = 1234;
console.log(window);
console.log(local_window);
}(this));
console.log(this);
console.log(window.example);
console.log(example);
プリント(予想通り)、以下:
Window
Window
Window
1234
1234
:Webページで
- 実行FirefoxとChromeの場合
- Firefox Addon-SDKコンテンツスクリプトで実行する場合
- クロームWebExtensionコンテンツスクリプトで実行
しかし、FirefoxのWebExtensionコンテンツスクリプトで、これは次のように出力されます
Window
Sandbox { browser: Getter, chrome: Getter, example: 1234, browser: Object, chrome: Object, window: Window → /, document: HTMLDocument → /, location: Location → /, top: Window → /, self: Window → /, 72 more }
Sandbox { browser: Object, chrome: Object, example: 1234, window: Window → /, document: HTMLDocument → /, location: Location → /, top: Window → /, self: Window → /, name: "", history: History, 72 more }
undefined
1234
example !== window.example
は、FFにChromeの拡張機能を移植する非常に奇妙な驚きでした。これは意図された破損(またはバグ)ですか?これはどこに文書化されていますか? MDN compatibility notesには表示されません。
コンテキスト:私はコンテンツのスクリプトに(this.$
に自身をインストール)zepto.jsを使用して、コードの一片がFFに失敗window.$
、でそれにアクセスしました。
で文書化されています。このページは、コンテンツスクリプトコンテキストでのページスクリプトオブジェクトの可視性についてのものですが、私はページスクリプトで何もしません。コンテンツスクリプトの 'x === this.x!== window.x'に関するものです。それはまた、 'wrappedJSObject'が無関係である理由です。 (私は質問に余分な文脈を追加しました) – Adrian17