Google chrome 后台脚本和popup.js之间的消息传递
我知道这是一个非常常见的问题,我已经阅读了很多关于类似情况的文档和答案,但我仍然无法让它工作。很抱歉,但我的问题是如何让内容脚本从popupjs获取消息 工作流是:当用户单击扩展图标时,它应该显示带有一些选项的弹出窗口。用户点击选项,扩展根据点击的选项制作一些东西 我尝试了以下几点: manifest.jsGoogle chrome 后台脚本和popup.js之间的消息传递,google-chrome,google-chrome-extension,messaging,Google Chrome,Google Chrome Extension,Messaging,我知道这是一个非常常见的问题,我已经阅读了很多关于类似情况的文档和答案,但我仍然无法让它工作。很抱歉,但我的问题是如何让内容脚本从popupjs获取消息 工作流是:当用户单击扩展图标时,它应该显示带有一些选项的弹出窗口。用户点击选项,扩展根据点击的选项制作一些东西 我尝试了以下几点: manifest.js { "name": "MyName", "version": "1", "description": "My chrome extension", "browser_action":
{
"name": "MyName",
"version": "1",
"description": "My chrome extension",
"browser_action": {
"default_popup": "popup.html"
},
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"css": [
"style.css"
],
"js": [
"bower_components/jquery/dist/jquery.js",
"bower_components/bootstrap/dist/js/bootstrap.js",
"content.js"
]
}],
"permissions": [
"activeTab",
"http://127.0.0.1:8000/"
],
"manifest_version": 2
}
popup.html
所以我看不到任何控制台日志(应该在页面的普通控制台中显示吗?),我放在chrome.runtime.onMessage.addListener中的任何代码都不起作用
我不太明白它为什么不起作用。我还尝试使用后台脚本来侦听popup.js中的消息,然后将消息从后台脚本传递到content.js,但它也不起作用我觉得您的代码很好。您是否在(重新)加载扩展后重新加载有问题的页面。内容脚本日志转到页面日志,右键单击按钮“检查弹出窗口”可以检查弹出窗口的日志。尝试移动
窗口。关闭()
在chrome.tabs.query
@rsanschez的回调函数中,或者甚至可以让响应函数关闭窗口。@rsanschez想回答这个问题吗?@Xan,谢谢,真的很有帮助
<!doctype html>
<html>
<head>
<title>My Extension</title>
<script src="popup.js"></script>
</head>
<body>
<ul>
<li id="push" class="option">Push</li>
<li>Actions
<ul>
<li id="dashboard" class="option">Dashboard</li>
<li id="list" class="option">Your Lists</li>
<li id="settings" class="option">Settings</li>
</ul>
</li>
</ul>
</body>
</html>
function click(e) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
console.log('message sent');
chrome.tabs.sendMessage(tabs[0].id, {text:"getStuff", action: e.target.id});
});
window.close();
}
document.addEventListener('DOMContentLoaded', function () {
var options = document.querySelectorAll('.option');
for (var i = 0; i < options.length; i++) {
options[i].addEventListener('click', click);
}
});
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.text == "getStuff") {
console.log('test sent');
}
});