2011-01-11 1 views
2

Ich bin neu in dieser Chrome-Erweiterung Plugin-Entwicklung. Ich entwickle ein neues neues Plugin mit dieser Chrome-Erweiterung.Nicht funktionierende geladene JQuery-Datei in der content_script in Chrome-Erweiterung

Meine Forderung ist Last jquery.js in die Content-Skript-Datei, wenn es mit nicht-Datei js (Ex: Ich für jquery.js Datei bin Überprüfung, fancybox.js Datei und wenn es nicht vorhanden ist, diese Dateien laden .)

Wenn ich diese Logik im Inhaltsskript implementiere, lädt es die jquery.js Datei. Danach funktioniert es nicht mehr im Inhaltsskript. Es zeigt $ (oder) jQuery ist nicht definiert. Für jedes Mal, wenn es geladen wird, aber nicht im Inhaltsskript ausgeführt wird.

Hier ist der Code, den ich implementiert habe.

document.getElementById('someid').onclick = loadJs(); 

function loadJS() { 
if(tyof jQuery == undefined || tyof jQuery != 'function') 
    { 
var jqscript = document.createElement('script'); 
jqscript.type = 'text/javascript'; 
jqscript.async = true; 
// Src of the script 
jqscript.src = "......url to jquery.js file.............."; 

// Check whether script is loaded or not 
     jqscript.onload=function(){ 
      if ((!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) { 
        console.log("Script loaded - "); 
            // It is showing error here 
             alert(typeof jQuery); 

      } 
     }; 

// Get the document header 
var head = document.getElementsByTagName('head')[0]; 
// Add script to header - otherwise IE complains 
head.appendChild(jqscript); 

} 
} 

Bitte schlagen Sie dies vor.

Danke.

+0

Wenn Sie möchten, dass die Leute Ihre Frage beantworten, sollten Sie sich Mühe geben, Ihre Frage und den Code richtig zu formatieren. –

+0

Sie rufen "Content-Skript" viele verschiedene Dinge dort. Aus Ihrem Code sieht es so aus, als würden Sie versuchen, jquery aus einem Inhaltsskript in ein übergeordnetes Dokument zu injizieren. Wenn Sie möchten, dass es danach auch in einem Inhaltsskript funktioniert, wird es nicht ausgeführt, da ein Inhaltsskript keinen Zugriff auf die übergeordneten Dokumentvariablen hat. Können Sie vielleicht Ihre Frage neu schreiben und das Inhaltsskript von den Konzepten der übergeordneten Dokumente trennen? (auch was ist mit diesem 0% Verhältnis?) – serg

Antwort

2

Chrome-Erweiterungen haben keinen Zugriff auf die Skripts, die die Webseite lädt und verwendet.

Google nennt diese isolierten Welten:

http://code.google.com/chrome/extensions/content_scripts.html

Sie können nicht ...

Verwenden Variablen oder Funktionen, die durch ihre Erweiterung der Seiten

Verwenden Variablen oder Funktionen von Web definiert Seiten oder durch andere Inhaltsskripte

Es ist also egal, welche Skripte es gibt. Was zählt, ist, dass Sie die Skripte, die Sie brauchen in Ihrem Manifest enthalten:

"content_scripts": ['jquery.js', 'myScript.js', 'optionsScript.js'], 

Die Reihenfolge der Listen Angelegenheiten also, wenn Ihr Skript jquery verwendet dann sollte jquery.js es vorangehen.

+0

Danke Harry. Es ist viel klarer/sauberer mit Ihrer Bearbeitung :) – Darin

+0

+1 Schöne ans ... Meine Zeit gerettet., – RajeshKdev

Verwandte Themen