问题
我曾经能够(在本地)使用以下两个 Chrome 扩展中的任何一个来轻松地将 jQuery 注入(inject)到还没有 jQuery 的页面中,并且我没有拥有(客户端)来试验设计更改、开发修改和实时故障排除:
不幸的是,现在由于防止“XSS”(跨站点脚本)的最新热潮,这些插件不再有效。这些变化背后可能有一个崇高的目的,我只是想了解发生了什么变化。我认为这与“内容安全策略”有关,我最近才听说,对此知之甚少。
我第一次知道XSS是2011年的浏览器问题,但是之前XSS的防范措施从来没有阻止过我做本地开发。我一直在寻找现代(2017 年底)的解决方案,但无济于事。
我不确定从这里到哪里去。
我试过但没有用的东西
以下是我尝试过的插件(直到大约 6 个月前都可以使用),但不再适合我:
- jQuery in Console (Plugin)
- jQuery Inject (Plugin)
- jQuery Injector (Plugin)
- GitHub - bluerabbit/jquery-inject: jQuery-inject(Chrome extension)
以下是我遇到的许多提供不再有效的解决方案的链接中的一些:
- How to inject script into a page using bookmarklet if the Content Security Policy is enabled on the server?
- Include jQuery in the JavaScript Console
- How to inject jquery to any webpage
- How do I include a JavaScript file in another JavaScript file?
- Google Chrome Extensions: How to include jQuery in programmatically injected content script?
- Inject jQuery Onto Any Site | brandon martinez
- Content Scripts - Google Chrome
最后一个看起来也很有希望,但我还没有尝试过:
我的问题
如何将 jQuery(使用 Chrome 开发者控制台)注入(inject)到不使用 jQuery 的网页中?
2017 年浏览器/JavaScript/编程世界是否发生了足够显着的变化,以至于如果一个人知道这一特定变化或现象,很容易解释为什么上述插件不再有效?
<为什么上述插件不起作用?今年所有浏览器公司是否普遍推出了一些重大变革?
最佳答案
这是一个对我一直有效的直接方法:
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
// ... give time for script to load, then type (or see below for non wait option)
jQuery.noConflict();
只需将每一行粘贴到控制台中,一次一个。 (实际上,如果您选择这些行并将它们一次性全部粘贴到 DevTools 控制台中,效果会很好)。
您可能会立即看到一个错误:Uncaught ReferenceError: jQuery is not defined
。忽略它 - DevTools 正在拉你的腿。 (谷歌对幽默的微弱尝试,也许...)
然后,在 DevTools 控制台中,测试它:
$('div').length; //press Enter
如果出现错误,请按以下方式尝试:
jQuery('div').length
希望第一种方法有效 - 但有时您需要使用第二种方法。
此代码感谢 jondavidjohn , 来自这个original post .
关于javascript - 如何在开发者控制台中使用 Chrome 注入(inject) jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997114/