2012-04-01 7 views
5

でアクセスできない、放火犯に可視オブジェクト:ウィンドウオブジェクトが含まれていることがわかるJavaScriptは、私が(ユーチューブのビデオページであることを起こる)現在のウィンドウをダンプライン持っている私のコードでは、コード

Firebug.Console.log(myWindow); 

Firebug.Console.log(myWindow.yt); 
を呼び出し、残念ながら

http://i.imgur.com/lHHns.png

:簡単にデバッガで検査することができるもう一つの目的である "YT" プロパティ、

"未定義"のログ - なぜですか、この "yt"プロパティにはどのようにアクセスできますか?

編集:私が書いているコードは、Firefoxの拡張機能の一部なので、実際にはぺガーの中で実行されているわけではありませんが、クロムでは - 私はそれが原因。クロムスクリプトは、スクリプトタグのコードとは対照的に、見える/アクセスできるものに何とか制限されていますか?

+0

私はChromeのコンソールからうまくアクセスできるので、私の推測はFirebugと関係があります。 – Griffin

+0

'Firebug.Console.log(myWindow);'と全く同じ行で、 'Firebug.Console.log(myWindow.yt);'と呼んでいますか? –

+0

@Griffin:そうではありませんが、Chromeや他の開発ツールを使ってアクセスできますが、ブラウザで実行されているコードでは見えません。Firebugでログオンできないだけでなく、方法も何も。 –

答えて

2

セキュリティ上の理由から、Firefox拡張機能はウェブページオブジェクトに直接アクセスするのではなく、wrapper経由でアクセスします。このラッパーを使用すると、DOMオブジェクトで定義されたすべてのプロパティを使用できますが、ページJavaScriptによって追加されたものはすべて非表示になります。あなたはaccess the original objectできる:あなたが拡張からWebページと対話したい場合

Firebug.Console.log(XPCNativeWrapper.wrappedJSObject.yt); 

ただし、Webページが(:myWindow.location.href = "javascript:..."例えば、コンテンツウィンドウで非特権コードを実行している)あなたにトリックを再生することはできません代替案を検討すべきです。

0

FirefoxとChrome拡張機能は、セキュリティ上の理由からページ内のJavaScriptにアクセスできません。

0

非同期APIを使用すると、このような混乱が見られました。

console.log(obj);は、すべてのオブジェクトの内容を示しますが、コード内のオブジェクトプロパティにアクセスするときは、呼び出しが非同期であるため実際にはまだ設定されていません。

クロムとFirefoxがすべて埋め込まれていることを示す理由はおそらく、ちょうどconsole.log()を非同期に処理する可能性があるためタイミング問題です。

関連する問題