2016-09-21 17 views
0

マニフェストのcontent_scriptsにjqueryをロードしようとしていますが、ページにjqueryが既にロードされているときに、そのページにドロップダウンが動作しなくなり、エラーが見つからない私のコンソールログに。したがって、私がマニフェストのcontent_scripts内のjqueryを削除した場合、ドロップダウンはうまく動作します。なぜなら、私はそれがすでにjqueryライブラリをロードしている現在のページであると仮定しているからです。google chrome拡張マニフェストjqueryをロードする

"content_scripts": [{ 
     "matches": [ 
      "http://*/*", 
      "https://*/*" 
     ], 
     "js": ["js/jquery-2.2.4.js", "js/custom.js"], 
    }], 
+1

[docs](https://developer.chrome.com/extensions/content_scripts#execution-environment)から: "コンテンツスクリプトは、孤立した世界と呼ばれる特別な環境で実行され、ページのDOMにアクセスできますページに作成されたJavaScript変数や関数には注入されません。 "ページのjQueryはコンテンツスクリプトに干渉しません。ここではもっと多くのことが起こっているはずです。エクステンションは正確に何をしていますか? – DelightedD0D

+0

また、 'custom.js'は何をしているのかを教えてください –

+0

問題を複製する** complete ** [mcve]を含めてトピック上にある質問を編集してください。通常、* manifest.json *、バックグラウンドの*や*コンテンツスクリプトを含みます。デバッグの助けを求める質問(「**なぜこのコードは動作しないのですか?**」)には、以下が含まれていなければなりません:►必要な動作、►特定の問題またはエラー*、および►問題を再現するのに必要な最短コード自体**。明確な問題文がない質問は、他の読者にとって有用ではありません。参照してください: "**どのように[mcve] **を作成するか"、[ここで私はどんな話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask] – Makyen

答えて

1

コンテンツスクリプトはメインウィンドウとは異なるjsコンテキストで実行されるため、競合しないようにしてください。

また、実行することで、ウィンドウのコンテキスト範囲からあなたのjQueryを削除してみてください可能性があります

var myJquery = jQuery.noConflict(true); 

をしかし、あなたはあなたのマニフェストファイルscript_contextセクションに追加することで、この持っている効果をdocument_startするスクリプトを動かす必要があります。

"content_scripts": [{ 
     "matches": [ 
      "http://*/*", 
      "https://*/*" 
     ], 
     "js": ["js/jquery-2.2.4.js", "js/custom.js"], 
     "run_at": "document_start" 
    }] 

しかし、それを行うと、ドキュメントがまだ準備されていない状態でcustom.jsスクリプトを実行できる状態にする必要があります。

ソースを追加すると、より適切な解決策になります。

関連する問題