Ich versuche, eine einfache Chrome-Erweiterung zu machen. Ich würde mich freuen, wenn jemand helfen kann.sendMessage funktioniert nicht in der Chrome-Erweiterung
Ziel: Wenn Sie auf die Schaltfläche im Erweiterungspopup (popup.html) klicken, wird der Titel der aktuellen Webseite in div angezeigt (mit der ID 'div1').
Problem: Ich habe Internet gesucht, um dies zu tun und festgestellt, dass die Weitergabe der Nachricht verwendet werden kann, um das gleiche zu erreichen. Also habe ich meine Hände darauf versucht. Aber es funktioniert nicht. Ich möchte wissen, was schief gelaufen ist.
Status:
= Die Erweiterung wird erfolgreich in Chrom importiert.
= Wenn das Erweiterungssymbol angeklickt wird, wird das richtige Popup angezeigt.
= wenn die Schaltfläche angeklickt wird, passiert nichts.
= Entwicklerkonsole zeigt keinen Fehler an.
Dateien:
=====================================
//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;
}
}
);
});
=== ==================================
Link zu jquery Skript-Datei: https://code.jquery.com/jquery-3.2.1.js
Es ist 'getElementsByTagName' (Plural) nicht' getElementByTagName' – Andreas
Dank @Andreas! Ich habe die Korrektur vorgenommen. Aber es löst nicht mein Problem :( –