2017-04-24 23 views
0

機能を実行しない.js内のボタンについては数日から問題があります。ここでChrome拡張機能:chrome.runtime.onMessage.addListener内の機能

popup.html内部の私のコードここ

<html> 
<head> 
<script src="popup.js"></script> 
</head> 

<body> 
<div id="panier_container"> </div> 
</body> 

</html> 

popup.js内部の私のコード:私は、コードを実行すると、私はポップアップ内のボタンを参照してください

chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { 

//Message en provenance du background 
if (msg.text === 'panier') { 
var panier_container = document.getElementById("panier_container"); 
panier_container.innerHTML ="<button id=\"totoButton\"> Affiche TOTO </button>"; 
} 

}); 

//Fonction toto 
function toto() { 
    alert("toto"); 
} 

document.addEventListener('DOMContentLoaded', function() { 
document.getElementById("totoButton").addEventListener("click", toto); 
}); 

しかし、私がボタンをクリックすると、何も起こりません。情報msgは私background.js

から来ているが、私はpopup.jsすべての内部で、このコードを書いた場合、それは大丈夫だ場合:

var panier_container = document.getElementById("panier_container"); 
panier_container.innerHTML ="<button id=\"totoButton\"> Affiche TOTO </button>"; 

//Fonction toto 
function toto() { 
    alert("toto"); 
} 

document.addEventListener('DOMContentLoaded', function() { 
document.getElementById("totoButton").addEventListener("click", toto); 
}); 

このコードでは、私はボタンを見て、私がクリックすると、toto(関数が実行されている)が見えます。

なぜブールの内部にあるのですかchrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {ボタンはtoto機能を実行しませんか?

は、あなたの答え

ジェレミー

+1

ポップアップにメッセージを送信するコードを表示できますか?つまり、どこにいても 'chrome.runtime.sendMessage'呼び出しを表示していないので、いつどのように呼び出すのかを知ることが重要です。どこにでも 'sendMessage'を呼び出さなければ、それが聞こうとしているイベント(メッセージの送信)は決して起こらないので、イベントリスナーが決して動かないことは全く例外です。あなたのコードのどこかに 'sendMessage'コールを表示していなければ、ポップアップが開いている間は実行されていません。 – apsillers

+0

ええと、グローバルclickリスナーをdocument.bodyに添付し、event.target.idがtotoButtonであるかどうかを確認するだけです。 – wOxxOm

+0

onMessageリスナ関数の中に 'function toto()'と 'addEventListener'コールを入れます**。それ以外の場合は、メッセージが受信される前に呼び出されます。 –

答えて

0

のために事前にありがとうございpopup.jsのためにこれを試してみてください:

chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { 

//Fonction toto 
function toto() { 
    alert("toto"); 
} 

//Message en provenance du background 
if (msg.text === 'panier') { 
var panier_container = document.getElementById("panier_container"); 
panier_container.innerHTML ="<button id=\"totoButton\"> Affiche TOTO </button>"; //create the button 
document.getElementById("totoButton").addEventListener("click", toto); //attach listener to button just created. 
} 

}); 

あなたのコードdocument.getElementById("totoButton").addEventListener("click", toto);があるため、実際の要素が、存在していた前と呼ばれていましたメッセージが受信された後に要素が作成されました。

+0

ありがとう、それは働いている:) –

関連する問題