2016-07-08 20 views
0

何らかの理由で、挿入されたスクリプトがコンテンツスクリプトが送信している内容を取得できません。contentScriptからinjectScriptにメッセージを送信

document.dispatchEvent(new CustomEvent('ToFBScript',{detail: {data: "Hello World"}})); 

//Injecting Script 
var s = document.createElement('script'); 
s.src = chrome.extension.getURL('fbscriptforextension.js'); 
(document.head||document.documentElement).appendChild(s); 
s.onload = function(){ 
s.parentNode.removeChild(s); 
}; 

マイcontentScript

var storage; 
document.addEventListener('ToFBScript',function(e){ 
storage = e.detail.data; 
console.log(storage); 
}); 

マイ注入されたスクリプト

+0

[Chrome拡張機能 - Gmailの元のメッセージを検索]の可能性のある重複リンク上に加え(http://stackoverflow.com/questions/9602022/chrome-extension-retrieving-gmails-original-message) –

+0

は、http: //stackoverflow.com/questions/9915311/chrome-extension-code-vs-content-scripts-vs-injected-scriptsも、コンテンツスクリプトと注入スクリプトの理解に役立ちます。 –

+0

クイックノート:最後の2回の編集で私の答えが無効になりました。あなたが答えを受け取った後に実質的に質問を編集することは、通常、悪い考えです。あなたがまだ問題を抱えている場合、私はあなたにそれらをロールバックし、新しい質問をするよう依頼するでしょう。 – Xan

答えて

1

あなたはCustomEventdataプロパティを設定しようとしているが、あなたが唯一のdetailを設定することができます。幸運なことに、JSON-serializableに設定することができます。

document.dispatchEvent(new CustomEvent('ToFBScript', {detail: {data: g}})); 

/* ... */ 

document.addEventListener('ToFBScript', function(e) { 
    storage = e.detail.data; 
} 
+0

私はこれを行い、console.log(storage)を入れました。注入されたスクリプトにイベントリスナーを入れても何も表示されず、何らかの理由で注入されたスクリプトがイベントを受け取っていないと思う。それぞれのスクリプトが読み込まれたり、注入されたりしているときにどうしたらいいですか? – Victoria

+0

さて、あなたはそれをどのように注入するのかはわかりません。 – Xan

+0

上記のコードを編集しました。コンテンツスクリプト用のコードブロックが注入されたスクリプトの注入を示しています。 – Victoria