状況:どのページでも動作するクロムエクステンションを作成しています。FacebookでjQueryが読み込まれないのはなぜですか?
問題質問:FacebookにjQueryを読み込むことができず、何が起こっているのか理解したいと思います。
仮説:Facebookは何とか両方を検出し、いくつかの超高度なハイテク所持:jQueryのは 表向き別の JSVMの実行コンテキストにおけるChromeの拡張機能を経由してロードされると
- を、Facebookは は何とか知っているメガマインドこれについては、表面上はとなり、別の JSVM実行 というコンテキストがあります。 jQueryのはscript.srcとブロックを経由してロードされていることを
-
それは(私はHTTPSを介して提供GoogleのCDNの代わりではない方法2つの作品、を行いますが 答えには十分ではありません jQueryのものを使用)。
DATA
私はjQueryのロードされていない方法を知っていますか?
I Chromeでコンソールを起動するには⌘⌥J。私がやる時:
> jQuery
>> ReferenceError : jQuery is not defined.
> $('body')
>> Error : Tried to get element "body" but it is not present on the page.
がどのように私はFacebookの中にjQueryをロードしようとしていますか?
方法1(必要なく、失敗した):
"content_scripts" : [
{
"matches" : ["<all_urls>"],
"js" : [
"javascript/jq/jquery-1.9.1.min.js",
"javascript/jq/non-standard.js"
],
"all_frames": true // (or false, same failure)
}
]
方法2(作品が、insufficent):
manifest.jsonをファイルに次のコード経由
このSO答え(load jQuery into console)に記載されている方法を使用して、正しいプロトコルを許可するように変更しました。
var jq = document.createElement('script');
jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict();
概要
仮説1は過乗って、Webブラウザの個別の実行コンテキストは、重大なセキュリティ上の脆弱性になるので(そのサンドボックスを壊す)、非常に考えにくい、とする可能性がありません認可された。したがって、私は恐らく不自然になり、明らかに見落としているでしょう。うまくいけばあなたの一人が見るでしょう。
付録(他の関連コード)
非standard.jsの全て:
$.fn.in_groups_of = function(countPerGroup) {
var groups = [], offset = 0, $group;
while (($group = this.slice(offset, (countPerGroup + offset))).length) {
groups.push($group);
offset += countPerGroup;
}
return groups;
};
詳細のmanifest.jsonを:
"manifest_version" : 2,
"permissions" : [
"http://*/",
"https://*/",
"tabs",
"storage",
"unlimitedStorage"
],
拡張機能はFacebook以外のサイトでも動作していますか? –
@SimonBoudrias大きな質問です。実は違う。私はStackoverflowをチェックしました(しかし、彼らは自分のjQueryをロードしているようですので、私は偽陽性です)。私の拡張機能はGoogleでも動作しません。いい視点ね!おそらく私は質問のタイトルを変更する必要がありますが、それは今は気を散らすことができます。 –
彼らが実装したその小さな$関数は面白いですが、何かをしているように振る舞いますが、実際にはちょうど欺きのエラーメッセージです。おそらく、彼らはfacebookの勇気を掘り起こそうとしている人々の群れをしようとしている。 – brysgo