Javascript 使用延迟标记删除生产网站中的脚本标记
我想删除远程js并将本地js加载到一个生产网站中 所以我使用下面的用户脚本Javascript 使用延迟标记删除生产网站中的脚本标记,javascript,tampermonkey,userscripts,Javascript,Tampermonkey,Userscripts,我想删除远程js并将本地js加载到一个生产网站中 所以我使用下面的用户脚本 // ==UserScript== // @name TV full screen // @match https://example.com/* // @grant none // @run-at document-start // ==/UserScript== new MutationObserver((mutations, observer) =>
// ==UserScript==
// @name TV full screen
// @match https://example.com/*
// @grant none
// @run-at document-start
// ==/UserScript==
new MutationObserver((mutations, observer) => {
const script = document.querySelector('script[src^="/static/bundles/main"]');
if (!script ) {
return;
}
observer.disconnect();
script .remove();
console.log('SRC removed');
document.head.appendChild(document.createElement('script')).src = "https://localhost/tv/my.js";
})
.observe(document.documentElement, { childList: true, subtree: true });
以下是生产网站中的代码
<script defer crossorigin="anonymous" type="text/javascript" src="/static/bundles/main.js" ></script>
由于脚本标记中有延迟代码,实际的源代码仍在执行,即使已删除标记。如何完全删除该脚本标记并停止执行并加载本地文件。尝试更改选择器更改行:
const script = document.querySelector('script[src^="/static/bundles/main_chart"]');
与:
可能是这样的:
var myScript = document.createElement('script');
if (location.hostname === "localhost" || location.hostname === "127.0.0.1"){
myScript.src = '/path/to/my_LOCAL_Script...';
}else{
myScript.src = '/path/to/my_REMOTE_Script...';
}
document.head.appendChild(myScript);
抱歉,这是打字错误,网页中的标记已删除,但仍然执行js。如果加载了脚本,则删除脚本标记是无用的,因为它已在运行。是的,在加载脚本标记之前如何删除。您好,有什么区别吗?document.querySelector(…)在加载的文档中搜索如何在加载dom之前更改源。加载某些脚本或其他脚本更容易。取决于主机名。仍不工作,仍将执行原始代码。
var myScript = document.createElement('script');
if (location.hostname === "localhost" || location.hostname === "127.0.0.1"){
myScript.src = '/path/to/my_LOCAL_Script...';
}else{
myScript.src = '/path/to/my_REMOTE_Script...';
}
document.head.appendChild(myScript);