2015-11-20 23 views
3

好的。我只是試圖在Facebook.com DOM元素中使用jQuery庫。其實Facebook並沒有使用jQuery。所以我試着在JS的片段之下注入jQuery這個頁面。在Facebook.com域中提供jQuery庫

var jq = document.createElement('script'); 
jq.src = "//code.jquery.com/jquery-latest.min.js"; 
document.getElementsByTagName('head')[0].appendChild(jq); 

setTimeout(function() { 
     $jq = jQuery.noConflict(); 
    }, 5000); 

但是,我無法在任何瀏覽器中使用任何'jQuery'功能。 $已經從facebook &定義我得到像jQuery$jq這樣的變量的錯誤。以上代碼與其他網站(包括Google.com)運作良好。

在Chrome中,它詳細介紹了facebook.com以下錯誤也是如此。

拒絕加載腳本 'https://code.jquery.com/jquery-latest.min.js',因爲它違反了 以下內容安全政策指令:「腳本SRC * .facebook.com * .fbcdn.net * .facebook.net * .google- analytics.com * .virtualearth.net * .google.com 127.0.0.1:* * .spotilocal.com:*「不安全內聯 '不安全-EVAL' * .akamaihd.net * .atlassolutions.com 斑點:鍍鉻延伸:// lifbcibllhkdhoafpjfnlhfpfgnpldfl」。

任何人碰到這個問題?請分享。提前致謝。

注意:我可以通過粘貼&執行整個代碼到控制檯利用jQuery功能,但我需要知道是什麼導致了此問題&任何替代的解決方案(如有)。

+0

_'jQuery','$ jq'&'$'已經從Facebook _...那麼爲什麼你需要追加其他的lib定義? – Jai

+1

@Jai:這些名稱存在_objects_,並不一定意味着嵌入了jQuery。他們本身可以簡單地創建這些對象,試圖讓_prevent_人們在他們的網站上使用jQuery。 (作爲一種額外的措施來保護人們避免寂寞的日子在他們的答案中說,如果瀏覽器可能不支持CSP呢。) – CBroe

+0

@Jai我的意思是,我不能使用'jQuery'' $'別名,因爲'$ '已經在Facebook JS代碼中聲明瞭&jQuery'和我定義的varibale'$ jq'都沒有運行,即使在執行該代碼片段之後。 –

回答

5

您面臨的問題是內容安全策略標頭。這允許僅使用HTTP頁眉中爲頁面本身提供的白名單站點上的腳本。你可以閱讀更多關於HTML5Rocks的工作原理。

周圍有這個政策沒有辦法:它是用來被Facebook以防止人們被說服(見「社會工程」),以執行任意Javascript代碼,讓其他人訪問他們的帳戶。

最好的解決方法是不使用jQuery庫,但使用本地JavaScript做你的操作。

+0

謝謝。原生JavaScript代碼將更加冗長,這就是爲什麼我選擇使用jQuery來擺弄。所以唯一的解決方案是將'jQuery'源代碼粘貼到控制檯中? –

+1

是的,或者實現你自己的幫助函數來做你需要的。 @JensonMJohn – lonesomeday

+0

好的。謝謝@ lonesomeday..Cheers !! :) –