javascript - 扩展脚本未从内容脚本接收消息 - chrome 扩展
问题描述
我有一个事件侦听器检查内容脚本中的鼠标移动,当检测到(即鼠标移动)时,它会向 popup.js 扩展脚本发送一条 chrome 消息。但是,popup.js 脚本似乎没有收到从内容脚本传递的任何消息。我还设置了从弹出窗口到内容脚本的辅助消息传递序列,该序列由于某种原因而起作用。
chrome.runtime.onMessage.addListener 回调中的打印在运行时不会打印。
popup.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(request.selText);
if (request.sender == "content" && request.selText == "disabled") {
// Disabled for webpage - No action
} else if (request.sender == "content" && request.selText !==
"disabled"){
// Some action with request.selText
}
});`
内容.js:
document.addEventListener('mousemove', function (e) {
chrome.runtime.sendMessage({sender: "content", selText : ""});
}, false);
辅助消息传递(这有效):
popup.js:
chrome.tabs.sendMessage(tabs[0].id, {cTabSettings: true});
内容.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.cTabSettings === true) {
// Some action
} else if (request.cTabSettings === false) {
// Some action
}
});
我的预期结果是 request.selText 字段将在弹出检查器工具中打印,但事实并非如此。
解决方案
我在内容脚本消息传递回调的末尾添加了一个空函数调用,它就可以正常工作。
代码如下所示:
chrome.runtime.sendMessage({sender: "content", selText : ""},
function () {});
推荐阅读
- algorithm - 关于月球近地点和远地点的算法
- php - 在 Laravel 7 中调用模型 [App\Category] 上的未定义关系 [products]
- java - 如何将“长”数字表示为链表中的节点 [JAVA]
- python - python函数和php转换的不同输出
- python - 在 Python 中生成 ISO8601 格式的随机日期时间列表
- python - python静态代码分析工具——代码分析(初探题)
- javascript - 你能在 chrome 上缩放任何视频吗
- pandas - 熊猫为什么没有使用 grp.agg({'SCORE' : 'mode'}).to_dict() 的模式
- elasticsearch - 弹性找不到嵌套元素
- tensorflow - 更改 TensorFlow 2 Object Detection API 的性能指标