2012-05-09 43 views

答えて

1

バックグラウンドページとコンテンツスクリプトの間にmessage passingを使用してください。バックグラウンドページは、2.jsをスクリプトとしてロードするか、または2.jsをアプリケーションのバックグラウンドスクリプト自体にすることによって値を保持し、chrome.extension.onRequest.addListenerで受信メッセージを待ち受けます。コンテンツスクリプトは要求を送信し、コンテンツスクリプトは目的の値を持つ応答を送信します。

+0

変数はオブジェクトです。それを言及しているはずです。 –

+0

私は、循環参照を持たないオブジェクトに対してメッセージの受け渡しが動作すると信じています。オブジェクトに循環参照があると、ストリング化できないため、作業が非常に困難になります。ストリングを外すだけでよい場合もあります。 – apsillers

0

私はこれを理解しました。ちょっと汚いですが、私が疑問に思っていた動的なオブジェクトで動作します。

単純にすべてのコードをページに挿入して追加しました。ここに私のコンテンツのスクリプトは次のとおりです。

var path = document.createElement('div'); 
path.id = 'codearea-path'; 
path.innerHTML = chrome.extension.getURL('/'); 
path.style.display = 'none'; 
document.body.appendChild(path); 

var script = document.createElement('script'); 
script.src = chrome.extension.getURL('1.js'); 
document.head.appendChild(script); 

その後、私は1.js内部2.jsを含めるように同じ種類のコードを使用していました。

+0

確かに、それは動作します - あなたは '2.js'がコンテンツスクリプトに使用できないと言ったので、私は動作の種類が範囲外であると仮定しました(しかし、あなたはそれがロード時に毎回読み込まれるべきではありません - 動的注入は大丈夫ですか?)あなたの背景ページから 'chrome.tabs.executeScript( '2.js')'を使うこともできると思います。 – apsillers

+0

あなたは正しいです、私は混乱のために私を許してください。 'executeScript()'の使用も検討しますが、現時点では拡張機能にはバックグラウンドページは必要ありません。 –

関連する問題