如何停止加载某些javascript文件?

如何停止加载某些javascript文件?,javascript,html,css,Javascript,Html,Css,我的HTML页面中包含了一些第三方javascript。 它在我的网页中添加了一些共享按钮,称为like <script src=http://something/something.js></script> 但有时我根本不想加载这个javascript。这可以在服务器端解决,在某些情况下,这会阻止上述行出现在网页上。但由于技术原因,无论是服务器端(如PHP)还是javascript(例如,使用document.write仅在需要时才将标记放在HTML中),都不可能

我的HTML页面中包含了一些第三方javascript。 它在我的网页中添加了一些共享按钮,称为like

<script src=http://something/something.js></script>

但有时我根本不想加载这个javascript。这可以在服务器端解决,在某些情况下,这会阻止上述行出现在网页上。但由于技术原因,无论是服务器端(如PHP)还是javascript(例如,使用document.write仅在需要时才将标记放在HTML中),都不可能从HTML中删除此标记。我只需要在javascript中解决这个问题,如果条件满足,我需要阻止脚本标记,这意味着标记始终存在于HTML中

是否有可能阻止加载上面提到的something.js URL?例如,我会在它之前或之后执行一些其他javascript。我认为这样做是可能的,但似乎不起作用:

<script>
   (function(){
      var scripts=document.getElementsByTagName('script');
      for (var i=0; i<scripts.length; i++) 
         if (scripts[i].src && scripts[i].src=='http://something...')
            scripts[i].parentNode.removeChild(scripts[i]);
   })();
</script>

<script src=http://something/something.js></script>

(功能(){
var scripts=document.getElementsByTagName('script');

对于(var i=0;i如果脚本依赖于在初始解析过程中出现在文档中,因为它在出现的地方输出HTML(例如,通过
document.write
),正如您的
hidemeifneeded
示例所示,那么您的“隐藏我”方法可能是客户端所能做的最好方法

如果在主解析期间脚本不需要出现在页面中,您可以延迟加载它,但从您的问题来看,情况似乎并非如此


正如您在问题中所说,这里的正确答案实际上是处理这个服务器端。

一个简单的解决方案可以是:

<script>
if(yourcondition){
    document.write('<script src=\"http://something/something.js\" type=\"text/javascript\"><\/script>');
}
else{
    document.write('<script src=\"http://something/OTHER.js\" type=\"text/javascript\"><\/script>');
}
</script>

如果(你的情况){
文件。写(“”);
}
否则{
文件。写(“”);
}
yourcondition
可以是存储在cookie或localstorage中的布尔值。也可以根据需要将其设置为
true
false

还请注意,脚本标记中的源值必须封装在

之间。您必须确保尽快加载脚本。我会在开头标记之后立即加载我的。在该脚本中,选择要阻止的所有标记(在我的脚本中,是iframe和img)并对它们进行迭代。添加事件侦听器”beforescriptexecute”并触发如下默认值:

                bsePd = element.addEventListener('beforescriptexecute', e => {
                    e.preventDefault();
                    e.target.removeEventListener('beforescriptexecute', bsePd);
                    console.log('Prevented script from execution:', e.target.src);
                });
对于那些动态添加的脚本,您可以添加事件监听器DOMNodeInserted并等待它们出现


这就是我制作cookie许可管理器的方法,我需要它来管理一个由于大量缓存机制而无法用PHP实现的站点。

看看这个Javascript延迟加载示例:@Jamie:unquoted属性语法在正确使用时,如上所述。我忘了提到带有第三方Java的HTML标记需要将脚本写入页面,我无法通过不打印标记来完成。我需要停止加载现有标记。我可以问一下原因吗?以及在加载过程中需要停止加载的位置吗?解释原因实际上有点复杂,你必须相信我:)你能试着解释一下吗?我很好奇;-)事实上,我真正的问题与我描述的不同。我修改它以提供易于理解的示例。但核心仍然是一样的-我正在寻找一种方法如何使用javascript阻止其他javascript:)我忘了提到带有第三方javascript的HTML标记需要写入页面,我不能不要通过不打印标记来完成。我需要停止加载现有标记。嘿,T.J.回答得好。我还建议如果OP采用隐藏元素方法,他们使用类而不是单个选择ID来捕获多个页面上的事件。根据MDN,这不是执行事件的标准侦听器。