我是铬扩展的新手,我在开始时遇到了一些问题。邮件在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>
弹出.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"});
});
很多此代码直接来自文档,所以我不知道我做错了什么。
我没看到你的代码有什么问题。你的Chrome版本是什么?根据您的总体目标,我认为您应该听取'chrome.browserAction.onClicked'(不弹出)并以编程方式注入内容脚本(https://developer.chrome.com/extensions/content_scripts.html#pi)在事件处理程序中。 –
@方觉我发送给内容脚本的消息取决于弹出窗口中的某些用户输入,所以我需要它。我的Chrome版本是26.0.1410.63版。 – gsingh2011