使 jQuery 库在 Facebook.com 域中可用

Make jQuery library available in Facebook.com domain

好的。我只是想在 Facebook.com DOM 元素中使用 jQuery 库。实际上,Facebook 并没有使用 jQuery。因此,我尝试在 JS 代码段下方注入,以使 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上给出了以下错误。

Refused to load the script 'https://code.jquery.com/jquery-latest.min.js' because it violates the following Content Security Policy directive: "script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' *.akamaihd.net *.atlassolutions.com blob: chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl".

有人遇到过这个问题吗?请分享。提前致谢。

注意 :我可以通过将整个代码粘贴并执行到控制台来利用 jQuery 功能,但我需要知道导致此问题的原因和任何替代解决方案(如果有的话)。

您遇到的问题是内容安全策略 header。这允许仅使用来自页面本身的 HTTP header 中提供的白名单站点的脚本。您可以阅读更多有关 HTML5Rocks.

的工作原理的信息

没有办法绕过此政策:Facebook 使用它来防止人们被说服(参见 "Social engineering")执行任意 Javascript 代码,让其他人访问他们的帐户。

最好的解决方案是不使用 jQuery 库,而是使用本机 Javascript 进行操作。

只需复制 content of the library 并将其粘贴到 facebook 控制台。