2012-04-08 2 views
0

Dies ist mein erstes Mal rumspielen mit Erweiterungen und was ich versuche zu tun ist sehr einfach, aber ich kann nicht scheinen, es zur Arbeit zu bekommen.Erstellen Sie eine Benachrichtigung jede Seite laden mit Chrome-Erweiterung

Ich möchte einfach eine Warnung aufgerufen werden jedes Mal, wenn eine Seite auf Google geladen wird.

In meinem manifest.json ich habe:

{ 
"name": "Bypass shib", 
"version": "1.0", 
"content_scripts": [ 
    { 
    "matches": ["http://www.google.com/*"], 
    "js": ["secondScript.js"] 
} 
], 
"manifest_version": 2 
} 

Okay, jetzt in meinem secondScript.js ich habe:

chrome.tabs.executeScript(null, {code: "alert('test')"}); 

Sollte dies den Alarm nicht ausgeführt werden, wenn eine Seite geladen wird? Wenn nicht kann jemand erklären, warum es nicht ist?

Antwort

3

Die Konsole zeigt die folgende Meldung:

Uncaught Error: "executeScript" can only be used in extension processes. 
See the content scripts documentation for more details. 

This post schlägt vor, „Chrome-Erweiterung Funktionen können nicht in Content-Skripte verwendet werden“, was sein könnte, was Sie laufen in.

Zur Vollständigkeit der secondScript.js die für mich gearbeitet war wie folgt:

console.log("test"); 
//chrome.tabs.executeScript(null, {code: "alert('test')"}); 
alert("test"); 
+0

Oh, und um ein Gesicht-Palme-Ratschlag zu teilen, stellen Sie sicher, dass Ihr Manifest https verwendet, wenn die URL, die Sie betrachten, https verwendet. – Beyamor

1

Content scripts tun nicht Zugang zu haben jede der chrome.tabs.* API-Methoden.

Um einen Alarm auf jeder Seite, entfernen Sie die chrome.tabs.executeScript Methode, anzuzeigen und lassen Sie Ihre secondScript.js nur enthalten:

alert('Test'); 

In einer Chrome-Erweiterung gibt es drei verschiedene Arten von Bereichen in denen JavaScript ausführen . Das Verständnis dieser Trennung ist für das Schreiben von Chrome-Erweiterungen unerlässlich, siehe this answer.