2016-07-19 7 views
1

Ich bin neu in Javascript, tragen Sie bitte mit mir :(Probleme alle Felder auf einer anderen Website Überprüfung mit Javascript für Chrome Extension

ich eine Google-Chrome-Erweiterung zu schaffen versuche, die alle Felder auf einem Scheck würden bestimmte Website und wählen sie die Option löschen sie haben

ich einen Link online gefunden, wo jemand ein Skript aus, die ähnlich ist zu dem, was ich unter diesem Link wollen:

JavaScript Check All Checkboxes

ich erstelle die JavaScript-Datei Für meine Erweiterung habe ich einen Code nur für die Überprüfung aller Felder erstellt. Es scheint aber nicht zu funktionieren. Könnten Sie mir irgendwelche Tipps geben? Hier ist der Code, den ich bisher geschrieben habe, die Erweiterung hat nur diesen Code in der .js-Quelldatei und ich frage ihn nur alle Kästchen zu überprüfen

Ich benutze das gleiche Layout wie die Chrome-Erweiterung Tutorial werden, dass später ändern sich

Es tut uns wie ein Noob suchen, mir bitte helfen, Jungs. Vielen Dank!

function check_all_in_document(doc){ 
    var c=new Array(); 
    c=doc.getElementsByTagName('input'); 
    for(var i=0;i<c.length;i++){ 
    if(c[i].type=='checkbox'){ 
     c[i].checked=true; 
    } 
    } 
} 

document.addEventListener("DOMContentLoaded", function() 
    { 
    check_all_in_document(window.document); 
    for(var j=0;j<window.frames.length;j++){ 
     check_all_in_document(window.frames[j].document); 
} 
}); 

Hier ist der Inhalt meiner manifest.json

{ 
    "manifest_version": 2, 

    "name": "Getting started example", 
    "description": "This extension shows a Google Image search result for the current page", 
    "version": "2.0", 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "permissions": [ 
    "activeTab", 
    "https://ajax.googleapis.com/" 
    ] 
} 

Hier ist, was in meinem HTML-Datei ist:

<!doctype html> 
<!-- 
This page is shown when the extension button is clicked, because the 
"browser_action" field in manifest.json contains the "default_popup" key with 
value "popup.html". 
--> 
<html> 
    <head> 
    <title>Getting Started Extension's Popup</title> 
    <style> 
     body { 
     font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif; 
     font-size: 100%; 
     } 
     #status { 
     /* avoid an excessively wide status text */ 
     white-space: pre; 
     text-overflow: ellipsis; 
     overflow: hidden; 
     max-width: 400px; 
     } 
    </style> 

    <!-- 
     - JavaScript and HTML must be in separate files: see our Content Security 
     - Policy documentation[1] for details and explanation. 
     - 
     - [1]: https://developer.chrome.com/extensions/contentSecurityPolicy 
    --> 
    <script src="popup.js"></script> 
    </head> 
    <body> 
    <div id="status"></div> 
    <img id="image-result" hidden> 
    </body> 
</html> 
+1

Fügen Sie auch Ihr Manifest, das anzeigt, welche Datei ist dieser Code in. Auch _don't Verwendung Snippets this_ zu formatieren. – Xan

+0

Hey Xan, ich habe den ursprünglichen Post bearbeitet, um all das hinzuzufügen, danke! – uoftkobe

+0

Es ist eine klassische Frage, aber ich habe bisher Schwierigkeiten, ein Duplikat zu finden.Während ich das tue, ein Hinweis: Was ist 'Dokument' /' Fenster' in diesem Popup? – Xan

Antwort

0

Okay, ich habe schockierend kein Duplikat finden (und eine heraus zeigen würde geschätzt), so ist hier eine regelmäßige Antwort:

Ihr popup.html ist ein eigenes, separates Dokument. Wenn Sie

doc.getElementsByTagName('input') 

ausführen, suchen Sie das Popup selbst und nicht die aktuelle aktive Registerkarte.

Wie Sie Erweiterungen neu sind, ist es doppelt wichtig, sorgfältig die Extension Architecture overview zu lesen, und sogar die ganze Übersichtsseite. Aber eine schnelle TL; DR: nur Content Scripts kann tatsächlich mit Inhalt von normalen Tabs interagieren. In einem Inhaltsskript bezieht sich document auf eine tatsächliche Seite, die in einer Registerkarte geöffnet ist, und dort würde Ihr Code funktionieren.

Sie haben bereits die "activeTab" Erlaubnis, so dürfen Sie nach einem Klick auf Ihrer Schaltfläche, um einen Content-Skript auf der aktuellen Seite injizieren.

chrome.tabs.executeScript(null, {file: "content.js"}); // null for current tab 

Setzen Sie den Code, der content.js und Messaging/Storage zwischen Teilen der Erweiterung kommunizieren DOM in dieser Datei manipuliert.

Schließlich seien Sie vorsichtig, dass das Popup einfach nicht existiert, während es geschlossen ist - wenn Sie mit etwas sprechen müssen, das immer da ist, wäre das eine background oder event Seite.