onMessage 未在 Chrome 扩展程序上执行
onMessage not being executed on Chrome extension
引用这篇文章,我正在尝试使用executeScript或sendMessage将变量传递给我的内容.js文件。使用 Chrome 开发工具,我看到它正在访问我的内容.js文件,并且它还运行我插入的测试警报,但是当它到达
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
它完全跳过它。我不确定这里发生了什么?
弹出窗口.js
function search() {
var name = document.getElementById('txtSearch').value;
chrome.tabs.executeScript({ file: "jquery.js" }, function () {
chrome.tabs.executeScript(null, {
code: 'var name = ' + name + ';'
}, function () {
chrome.tabs.executeScript({ file: 'content.js' });
});
});
}
document.getElementById('btnSearch').addEventListener('click', search);
或弹出窗口.js使用 sendMessage
function search() {
var name = document.getElementById('txtSearch').value;
chrome.tabs.executeScript({ file: "jquery.js" }, function () {
chrome.tabs.executeScript({ file: 'content.js' }, function () {
chrome.tabs.sendMessage({ name: name });
});
});
}
document.getElementById('btnSearch').addEventListener('click', search);
内容.js
alert('hi');
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
console.log(message.name);
});
参考我在 SO 上找到的不同答案(找不到它 atm),我缺少将选项卡 ID 传递给内容脚本的函数。
chrome.tabs.query({ active: true }, function (tabs) {
chrome.tabs.sendMessage(tabs[0].id, {'type': type, 'name': name });
});
相关文章:
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 使用javascript将视频从我的android应用程序上传到youtube
- 我想用Javascript网站在开放的Chrome浏览器上执行功能
- 如何保护节点webkit应用程序上的字体
- 如何减少在移动网络应用程序上播放声音的延迟
- 如何让React JS点击处理程序在执行时更新DOM
- 如何在ExtJs4应用程序上为视图、存储和模型设置自定义文件夹名称
- jQuery成功处理程序未在生产服务器上执行,但在dev中运行良好
- 如何在Java应用程序中阻止XSS攻击并防止用户在网页上执行JavaScript
- "未定义“角度”;在Liferay中存储的角度应用程序上执行Protractor测试时出错
- 无法在“导航器”上执行“注册协议处理程序”:方案“消息”不属于方案白名单
- onMessage 未在 Chrome 扩展程序上执行
- 从 C# 应用程序在网站上执行 JavaScript 命令
- 如何使用本机节点驱动程序在节点服务器上执行mongo查询字符串
- 如何在Raspberry Pi上执行Node.js应用程序的关闭命令
- 每次在Rails 5应用程序中的涡轮链接加载事件上执行JS
- 在JavaScript中的嵌套对象上执行Semver,主要、次要或修补程序
- 在谷歌浏览器扩展程序的精确选项卡上执行脚本
- 如何确保javascript单页应用程序只能在单个浏览器选项卡上执行
- 在Windows Store应用程序上执行JavaScript代码