2011-01-11 24 views
2

このChrome拡張プラグインの開発は初めてです。私はこのクロム拡張を使って新しいプラグインを開発しています。chrome拡張子のcontent_scriptにロードされていないjqueryファイル

私の要件は、jsファイルを持っていないときにコンテンツスクリプトにjquery.jsファイルをロードすることです(例:jquery.jsファイル、fancybox.jsファイルをチェックしています。 。)

コンテンツスクリプトでこのロジックを実装すると、jquery.jsファイルがロードされます。その後、それはコンテンツのスクリプトで動作していません。それは$(または)jQueryが未定義であることを示しています。毎回読み込み中ですが、コンテンツスクリプトでは実行されません。

ここに私が実装したコードがあります。

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); 

} 
} 

これをお勧めします。

ありがとうございました。

+0

あなたの質問に答えたい人は、あなたの質問とコードを正しく書式設定するための努力をする必要があります。 –

+0

「コンテンツスクリプト」には、さまざまなことがあります。あなたのコードから、コンテンツスクリプトから親文書にjqueryを挿入しようとしているようです。コンテンツスクリプトで親ドキュメント変数へのアクセス権がないため、コンテンツスクリプトでも同様に動作させたい場合は、それはしません。おそらくあなたの質問を書き換えて、親のドキュメントの概念からコンテンツスクリプトを分けることができますか? (0%の比率もどうですか?) – serg

答えて

2

Chrome拡張機能では、ウェブページが読み込んで使用するスクリプトにアクセスできません。ウェブで定義され、その拡張機能のページ

使用変数や関数によって定義された

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

あなたがすることはできません...

使用変数や関数:

Googleは、この分離された世界を呼び出しますページまたは他のコンテンツスクリプトによって

したがって、どのスクリプトがあるかは関係ありません。スクリプトはjqueryのを使用している場合

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

リストの順序が重要その後、jquery.jsがそれに先行する必要がありますので:重要なのは、あなたがあなたのマニフェストに必要なスクリプトが含まれていることです。

+0

ハリーに感謝します。それはあなたの編集でもっとはっきりと/クリーナーです:) – Darin

+0

+1素敵なans ...保存された私の時間。 – RajeshKdev

関連する問題