【问题标题】:Error in sending data from background.js to popup.js in chrome extension在 Chrome 扩展中将数据从 background.js 发送到 popup.js 时出错
【发布时间】:2015-04-19 01:48:48
【问题描述】:

我正在创建一个 chrome 扩展。我在将消息从 background.js 发送到 popup.js 时遇到问题。我成功地将一些静态数据从 background.js 发送到 popup.js。但是,当我尝试从 background.js 动态发送数据(即 content-script.js 发送到 background.js 的数据)到 popup.js 时,当我在 popup.html 上打印它时,它给出了未定义的结果。

这是我的 popup.js:

 var value;
  window.onload = function(){   
    chrome.runtime.sendMessage({getVal: "Hi"}, function(response){
    value = response.responseSeltext;
    alert(value);
    });
    document.getElementById('save').onclick = test;
}

这是我的 background.js:

    var seltext;
        chrome.runtime.onMessage.addListener(
        function(request, sender, sendResponse) {

        if (request.ezynotes != ""){
          seltext = request.ezynotes;
          alert("In extension "+seltext);

          //document.getElementById("notes").innerHTML += request.ezynotes;
         }
        if (request.getVal != ""){
          sendResponse({responseSeltext:seltext});

          //seltext = request.ezynotes;
          alert("In extension "+seltext);

          //document.getElementById("notes").innerHTML += request.ezynotes;
         }

  });

【问题讨论】:

  • 您能否不要使用alert() 进行调试?它会从您的弹出窗口中窃取焦点并可能使其关闭。此外,众所周知,由于阻塞执行会导致问题。
  • 我尝试删除所有警报,但它仍然在 popup.html 上给出 undefined。
  • 你如何测试它是未定义的?另外,如果您还没有,请尝试通过右键单击扩展按钮并选择“检查弹出窗口”来进行调试。

标签: google-chrome-extension background popup content-script


【解决方案1】:

我假设你在后台监听来自 content.js 的消息并尝试将它发送到 popup.js。对吧??在这种情况下,您必须从后台发送消息并在 popup.js 中添加一个侦听事件,这在您的代码中不存在。

【讨论】:

  • 谢谢。我正在后台收听来自 content.js 的消息并尝试将其发送到 popup.js。它是正确的。我认为在 popup.js 中收听消息是一种方式,另一种方式是我所写的——即来自 background.js 的响应。我已通过仅从 background.js 向 popup.js 发送静态数据(“Hi”)进行验证,但我无法获取此动态数据。
  • @RSY 在 background.js 中的 seltext 未定义,这就是您未定义的原因。在 javascript 全局变量中,默认值是未定义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多