Javascript 使用延迟标记删除生产网站中的脚本标记

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) =>

我想删除远程js并将本地js加载到一个生产网站中

所以我使用下面的用户脚本

// ==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);