2016-03-21 4 views
2

injiziere Ich benutze content scripts und ich möchte eine Schaltfläche auf eine Webseite zu injizieren. DieseWie man eine Taste auf eine Webseite mit Chrome Extension

ist mein manifest.json:

{ 
    "manifest_version": 2, 
    "name": "my extension", 
    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "permissions": [ 
    "activeTab" 
    ], 
    "content_scripts": [ 
     { 
     "matches": ["http://127.0.0.1:8000/*"], 
     "js": ["script.js"], 
     "run_at": "document_end" 
     } 
    ] 
} 

Dies ist popup.html:

<html> 
    <body> 
    <input type="button" id="button" style="display:none;"> 
    </body> 
</html> 

Und script.js:

document.body.style.backgroundColor = "yellow"; 
var button = document.getElementById("button"); 
button.style.visibility = "visible"; 

Wann http://127.0.0.1:8000 werde ich den Hintergrund auf gelb zu sehen, aber Es findet keinen Knopf weil es nicht Teil der Webseite ist, die von meinem lokalen Server bedient wird. Es zeigt diesen Fehler:

Uncaught TypeError: Cannot read property 'style' of null 

Was soll ich eine Taste auf der Oberseite des Inhalts in http://127.0.0.1:8000 zu injizieren tun (vorausgesetzt, ich weiß nicht, seinen Inhalt)?

Antwort

3

eine Schaltfläche einzufügen, erstellen Sie einfach es in Sie Inhalte Skripte und fügen Sie ihn, Sie müssen nicht (nicht) erklären sie in popup.html

manifest.json

{ 
    "manifest_version": 2, 
    "name": "my extension", 
    "content_scripts": [ 
     { 
     "matches": ["http://127.0.0.1:5000/*"], 
     "js": ["script.js"]   
     } 
    ] 
} 

script.js

document.body.style.backgroundColor = "yellow"; 
var button = document.createElement("button"); 
document.body.appendChild(button); 
1

Sie sollten eine "run_at": "document_end" in Ihrem content_scripts Eigenschaft

In document_end, die Skriptdateien dann injiziert werden hinzufügen, nachdem der DOM abgeschlossen ist. Auf diese Weise der document wird in der Lage sein, Ihre verlorenen Knopf finden :)

"content_scripts": [ 
     { 
     "matches": ["http://127.0.0.1:5000/*"], 
     "js": ["script.js"], 
     "run_at": "document_end" 
     } 
    ] 
Verwandte Themen