我試圖做一個簡單的擴展。如果有人能幫忙,我會很高興。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!我做了更正。但它不能解決我的問題:( –