1

関数から別の関数に要素を渡す必要がありますが、Web サービス (AJAX) 呼び出しが完了した後でのみです。

コンテンツ スクリプト (popup.js):

function runThis(){
 var elem = $(".mainelem");
 var objDetails = {
  element : elem
 }
 self.port.emit("runCall", objDetails);
 self.port.on("callComplete", function(response){
  $(response.element).text("New text entered.");
 });
}

メイン js (main.js):

main_panel.port.on("runCall", function(obj){
  main_panel.port.emit("callComplete", obj);
});

html ファイル (popup.html):

<div class="mainelem"></div>

ただし、テキストは追加されません。また、port.on("callComplete") の関数にコンソールを配置しようとすると、次のような値がコンソールに表示されます。

{"0":{"query111107803796615637436":15},"context" :{ "query111107803796615637436":15},"length":1}

要素を渡す方法について誰かが私を助けてくれますか? または、間違った方法で要素を取得しようとしている場合は?

4

1 に答える 1

1

DOM オブジェクトを発行することはできません。シリアル化可能な値のみを発行できます。

function runThis(){
 var elem = document.querySelector(".mainelem");
 var objDetails = {
  element : elem.textContent; // Emit string, for example.
 }
 self.port.emit("runCall", objDetails);
 self.port.on("callComplete", function(response){
  elem.textContent = "New text entered.";
 });
}
于 2015-09-10T11:22:51.420 に答える