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 回答