我试图做一个简单的扩展。如果有人能帮忙,我会很高兴。sendMessage不能在扩展中使用
目标:当您单击扩展弹出式菜单(popup.html)中的按钮时,当前网页的标题以div(ID为'div1')显示。
问题:我搜索了互联网做这个,发现传递消息可以用来实现相同。所以我试了一下。但它不工作。我想知道哪里出了问题。
状态:
=扩展被成功导入的铬。
=当单击扩展图标时,会显示正确的弹出窗口。
=当按钮被点击时什么也没有发生。
=开发者控制台显示没有错误。
文件:
=====================================
//manifest.json
{
"manifest_version": 2,
"name": "some_name_extension",
"version": "0.0.1",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": ["jquery-3.2.1.js", "content_script.js"]
}
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
=====================================
<!-- popup.html -->
<! doctype html>
<html>
<head>
<title>
</title>
<script type="text/javascript" src="popup.js">
</script>
<style>
html
{
height: 200;
width: 200;
}
</style>
</head>
<body>
<button id="btn1">
click me!
</button>
<div id="div1">
(title will be displayed here)
</div>
</body>
</html>
=====================================
//content_script.js
document.addEventListener('DOMContentLoaded', function() {
var title1=document.getElementsByTagName("title")[0].innerHTML;
chrome.extension.onMessage.addListener(
function(msg, sender, sendResponse) {
if(sender=="popup")
{
chrome.extension.sendMessage(title1,"content","1");
}
});
});
=====================================
//popup.js
document.addEventListener('DOMContentLoaded', function() {
var mainBtn = document.getElementById('btn1');
mainBtn.addEventListener('click', function() {
chrome.extension.sendMessage("button_clicked","popup","1");
});
chrome.extension.onMessage.addListener(
function(msg, sender, sendResponse) {
if(sender=="content")
{
document.getElementById("div1").innerHTML=msg;
}
}
);
});
=== ==================================
链接到jQuery脚本文件:https://code.jquery.com/jquery-3.2.1.js
它是'getElementsByTagName'(复数)而不是'getElementByTagName' – Andreas
谢谢@Andreas!我做了更正。但它不能解决我的问题:( –