好的。我只是想在 Facebook.com
DOM 元素中使用 jQuery 库。实际上,Facebook 并没有使用 jQuery
。因此,我尝试在 JS
代码段下方注入(inject),以使 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 使用它来防止人们被说服(请参阅“社会工程”)执行任意 Javascript 代码,从而使其他人可以访问他们的帐户。
最好的解决方案不是使用 jQuery 库,而是使用 native Javascript 来进行操作。
关于javascript - 使 jQuery 库在 Facebook.com 域中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825812/