2011-07-11 24 views
3

私はページにscriptタグを追加するChromeの拡張機能を作成し、その外部スクリプトで定義されたコード使用していますよ注入:クローム拡張:外部スクリプト

$('body').append('<script src="..."></script><script>console.log(SomeObject)</script>'); 

SomeObjectは外部スクリプトで定義されているが、だから私はそれにアクセスすることができるはずですよね?まあ、私は、 "定義されていない"エラーが出るので、私はできません。

私はさらにhead.jsを使って、外部スクリプトを読み込んで、スクリプトがロードされた後に機能を実行しようとしても無駄にしました。

Chromeコンソールを開くと、気になるオブジェクトにアクセスできます。

バックグラウンドページ内にコンテンツスクリプトとexecuteScriptの両方を使用してみましたが、役に立たなくなりました。どちらも、console.log(window)を使用すると、コンソール内のwindowオブジェクトを検査でき、SomeObjectは見つかりません。 Chromeコンソールのwindowオブジェクトを検査すると、それがあります。

何らかの形で注射されたスクリプトやサンドボックスがありますか?

ありがとうございます!

<script src="..."></script><script>setTimeout(function() {console.log(SomeObject)}, 3000)</script> 

答えて

1

セキュリティの制限のために答えができないようです:(

iframe(奇妙なことに、iframeの親文書にアクセスする)を使用して、私の周りに自分の道をハックする必要がありました。

1

私は、あなたがそれをすぐに呼び出したときにスクリプトがちょうどロードされていないこの作品をん賭け

var script = document.createElement('script'); 
script.src = "..."; 
script.addEventListener('load', function() { 
    // SomeObject is available!!! 
}); 
document.head.appendChild(script); 

私は疑問に思う理由のどれも他の方法が働いた...

+0

私もそう思っていたので、なぜhead.jsを使ってみましたか?しかし、私もあなたの提案を試して、それはまだ動作しません:( – Ivan

2

これが最終的に働いていたものです::

+0

あまりにも早くスポーク...それはランダムに動作します... – Ivan

関連する問題