2017-04-25 1 views
-1

Ich habe Kaninchen Löcher in den letzten 2 Tagen gegangen und habe dies nicht herausgefunden. Ich bin neu in der Programmierung, was mein Gesamtproblem sein könnte!Chrome Extension mit API funktioniert nicht

Mein HTML-Code (popup.html) für meine Chrome-Erweiterung ist wie folgt:

<html> 
    <body> 

    <div id="ourmanna-verse">Loading...</div> 
    <script type="text/javascript" src="votd.js"></script>  </body> 
</html> 

Meine votd.js Datei Code ist unten.

<script src="http://www.ourmanna.com/verses/api/js/" type="text/javascript"> 
</script> 

Die Website im Script-Tag hat die Funktion, wenn Sie die URL folgen, obwohl ich nicht bin kopieren und in aufgrund der Formatierung der es aus dem Browser einfügen Rendering es: O!

enter image description here

Die popup.html Datei ziehen nicht die votd.js Datei in der div-ID zu füllen "ourmanna-Vers". Kann mir jemand helfen, das herauszufinden?

Ich habe auch die Fehler von der Konsole und den Code aus der votd.js-Datei enthalten. Vielleicht ist es mit der Syntax meines Codes? Console errors and .js file code

+0

Die js-Datei sollte mit einem 'script'-Tag in HTML referenziert werden. Siehe auch den [Übersichtsartikel zur Erweiterung] (https://developer.chrome.com/extensions/overview). – wOxxOm

+0

Danke, wOxxOm - Ich habe die HTML-Datei aktualisiert, um dies widerzuspiegeln (den Code/die Frage wurde oben aktualisiert), aber die HTML-Datei ruft immer noch nicht meine .js-Datei auf. Irgendwelche anderen Vorschläge? Ich schätze deine Hilfe sehr! –

+0

votd.js auf dem Screenshot ist kein gültiges JavaScript. – wOxxOm

Antwort

1

http://www.ourmanna.com/verses/api/js/ enthält diesen Inline-Skript (mit schöner Formatierung):

(function(){ 
    var mannaverse='For the LORD is our judge, the LORD is our lawgiver, the LORD is our king; it is he who will save us.'; 
    var mannaverse_reference='Isaiah 33:22'; 
    var mannaverse_version='NIV'; 
    if(document.getElementById('ourmanna-verse')!==null){ 
     document.getElementById('ourmanna-verse').innerHTML='<div id="mannaverse-container"><p id="mannaverse">'+ 
     mannaverse+'</p><p id="mannaverse-reference">'+ 
     mannaverse_reference+' <small id="mannaverse-version"><i>('+ 
     mannaverse_version+')</i></small></p></div>'; 
    } 
})(); 

votd.js enthält einen HTML-Skript Bezug auf dem:

<script src="http://www.ourmanna.com/verses/api/js/" type="text/javascript"> 
</script> 

Das funktioniert nicht, weil votd.js kann nur enthalten Javascript.

Ich vermute, dass Sie möchten, dass das Popup diese Remote-JS-Datei aufrufen. Dazu müssen Sie zuerst, es zu popup.html direkt hinzufügen:

<html> 
<body> 
    <div id="ourmanna-verse">Loading...</div> 
    <script type="text/javascript" src="http://www.ourmanna.com/verses/api/js/"></script>  
</body> 
</html> 

Sie müssen auch den Zugriff auf diese Remote-Skript in der Sicherheitspolitik Inhalt erlauben in der manifest.json:

{ 
    ... 
     "content_security_policy": "script-src 'self' https://www.ourmanna.com blob: filesystem: chrome-extension-resource: ;object-src 'self'", 
    ... 
} 

Schließlich müssen Sie sicherstellen, dass Ihr Quellskript über HTTPS bereitgestellt werden kann.

+0

Das wäre unmöglich, da 'http:' Domains nicht auf die Whitelist gesetzt werden können. – Xan

+0

@Xan Ah, ja, natürlich, aktualisiert – Keith

+0

Beachten Sie, dass, während Ihre Antwort technisch einwandfrei ist, für diesen bestimmten Zweck ist es eine _terrible_ Lösung, da sie Daten APIs haben: http://www.ourmanna.com/verses/api/ Das wäre viel sicherer als das Ausführen von beliebigem Remote-Code, der möglicherweise Probleme mit dem Chrome Web Store verursacht. – Xan