消息传递在chrome扩展不工作
Message passing in chrome extension not working
我是chrome扩展的新手,我在开始时遇到了一点麻烦。
首先,我的总体目标是能够在我的弹出框中单击一个按钮,并在DOM中有一些变化。如果我理解正确的话,这样做的方法是加载内容脚本并向该内容脚本发送消息。这是我从Chrome开发者页面看到的,但我在控制台日志中没有看到任何东西:
manifest.json
{
"manifest_version": 2,
"name": "Test",
"version": "1.0",
"permissions": [
"tabs", "http://*/*"
],
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["content.js"]
}
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
popup.html
<html>
<body>
<script src="popup.js"></script>
</body>
</html>
popup.js
document.addEventListener('DOMContentLoaded', function () {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
});
content.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
很多代码直接来自文档,所以我不知道我做错了什么
我只是将您的代码复制到我的机器上并按原样运行它,它可以像您期望的那样工作。我想你可能会对感到困惑,但是您期望的console.log
输出将出现。
打开任何网页并打开该页的控制台。点击你的浏览器操作,弹出窗口显示出来,果然出现了from a content script:chrome-extension://fndmlopghajebfadeabnfnfmhalelokm/popup.html
行。
你没有看到你的goodbye
线出现在那里,虽然-因为这是从popup.js
被注销,而不是标签的内容脚本。让我们打开一个检查器,在那里寻找goodbye
消息。右键单击浏览器操作图标并选择"Inspect弹出"菜单项。您的(空)弹出显示,并出现一个新的检查器窗口;选择Console选项卡,您将在那里看到goodbye
消息。
更多信息,请参见Chrome扩展调试教程。
p。 chrome.tabs.getSelected
已弃用;你应该使用chrome.tabs.query
。而且我同意这样的观点——您应该考虑使用编程注入来更改DOM。
popup.js脚本将在加载popup.html (DOMContentLoaded)时启动该文件。但可以肯定的是,将被注入的内容脚本还没有在任何网页中,因为您还没有时间去打开它,而那"matches":["http://*/*"],是可以的。改变背景内容脚本的背景脚本,我认为它会工作。
- 扩展移相器按钮类不工作
- window.location.htm无法在chrome扩展中工作
- 扩展在LeafletJS中是如何工作的,为什么我需要一个中介归因才能使其正确工作
- Chrome扩展程序:浏览器操作单击按钮工作一次
- 用于检查文件扩展名不工作的Javascript If语句
- 按钮不'不能在自定义镀铬扩展中工作
- Chrome扩展的BatteryStatusneneneba API不工作
- 谷歌Chrome扩展在用Javascript打开的弹出窗口中工作吗
- Chrome扩展和Chome浏览器中的Jquery工作方式不同
- 按钮点击不工作在谷歌扩展
- Javascript JIRA扩展无法在悬停时工作
- 从chrome扩展动态创建Google工作表
- 以下 Chrome 扩展程序 JavaScript 代码片段究竟是如何工作的
- Chrome扩展程序在后台工作
- 新的google.maps.LatLngBounds()绑定扩展和中心工作随机
- 让谷歌浏览器扩展程序只在一个标签上工作
- 无法在扩展程序之间获取 chrome.runtime.onMessage外部工作
- 工作流程/选项以扩展其他选项
- onPageLoad 在 Firefox 扩展开发中无法正常工作
- Chrome 扩展程序历史记录 API 无法正常工作