我有一个不常见的问题。
我无法访问公司 Drupal 网站的 head 或数据库,但是,我正在使用提供的“JS Injector”为该站点构建一个“插件”。
我在本地破解,只是将我的 javascript 复制/粘贴到注入器中(现在我想不出一个更糟糕的开发环境,产品开发需要永远)。
在我的匆忙中,我不小心调用了我在本地需要的 jQuery。这主要是因为调用 jQuery 两次是不好的。页面绘制/CSS 呈现,但我无法访问任何管理模块来编辑我更新的节点,因此我可以解决问题。
由于“自定义此页面”进行 ajax 调用以初始化任何 Drupal 后端 UI 内容。我的想法是从我设置的另一个内部页面访问 JS Injector 并运行一个脚本,该脚本可以以某种方式“进入”并在渲染之前删除我对 jQuery 的调用。
我可以通过它的来源获取脚本吗?我不能使用 jQuery 删除页面上的第二个 jQuery 脚本...可以吗?只是问就很痛。
这是我要删除的确切脚本,没有类型属性。只是一个src:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
function getScript()
{
var s;
s = document.getElementsByTagName('script');
if(s.querySelector('[src]') === "https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"){
this.remove;
}
}
removeScript();
这样的事情可能吗?
td; dr在加载 jquery 之前删除对 jquery 的调用。
解决方案(感谢 Serge Seredenko):
// ==UserScript==
// @name test script
// @namespace test
// @include http://your.website.com/
// @version 1
// @grant unsafeWindow
// @run-at document-start
// ==/UserScript==
unsafeWindow.watch('jQuery', function(i, o, n) {
n.noConflict()
if (unsafeWindow.__old_jQuery)
return unsafeWindow.__old_jQuery
unsafeWindow.__old_jQuery = n
return n
})