javascript - Chrome 扩展回调传递两个值,其中一个显示未定义?

标签 javascript google-chrome-extension callback

谁能向我解释一下为什么输出是:“x is: 0 y is: undefined”??

浏览器操作.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  chrome.tabs.sendMessage(tabs[0].id, {msg: "test"}, function(x,y){
    document.getElementById("status").innerHTML = "x is: " + x + " y is: " + y;
  });
});

内容脚本.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
    if(request.msg == "test"){
        sendResponse(0,0);
    }
});

最佳答案

根据

responseCallbacksendResponse函数中,只有一个参数,即json响应对象。调用 sendResponse 时可能会删除额外的参数(我猜)

正如我们在 JavaScript 中所知,未提供的参数将变为 未定义,这就是为什么在访问 时会得到 未定义 >ychrome.tabs.sendMessage 的回调中。

关于javascript - Chrome 扩展回调传递两个值,其中一个显示未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38618980/

相关文章:

javascript - 为什么此查询返回所有查询结果,而不仅仅是与用户名匹配的结果?

javascript - 如何从单个表单元素内的多个字段集中获取输入字段(包括选择、文本区域)的所有值?

javascript - 循环函数(Javascript 回调帮助)

javascript - 当调用返回函数的函数返回函数时,底层如何获取数据呢?

javascript - 简单的正则表达式问题: Replacing words with '?' s

google-chrome-extension - 如何从弹出窗口与 background.js 交互?

javascript - Chrome Commands API 使默认弹出窗口可见

google-chrome - 有什么办法可以在事件中弹出气球吗? ( Chrome 扩展)

java - GWT 中的客户端回调

javascript - AngularJS $scope.$apply() 困境