如何通过其内容及其src删除脚本标记?

时间:2015-07-28 15:06:39

标签: javascript jquery

我需要删除脚本标记(<script>...</script>)的内容和/或其src属性。以此为例:

<script type="text/javascript">
    var adfly_id = 2776246;
</script>

<script src="https://cdn.adf.ly/js/display.js"></script>

我已尝试过此代码:

jQuery(document).ready(function($){
    $('script').each(function() {
        if (this.src === 'https://cdn.adf.ly/js/display.js') {
            $(this).remove();
        }
    });
});

但是没有成功(我在WP中使用该代码 - 如果有人问为什么jQuery语法),可以给我一些建议吗?

编辑:这里的想法是删除脚本以防止其执行

4 个答案:

答案 0 :(得分:4)

这似乎有效:

jQuery(document).ready(function($){
    $('script').each(function() {

        if (this.src === 'URL_HERE') {

          this.parentNode.removeChild( this );
        }
    });
});

答案 1 :(得分:0)

您不能删除我认为的脚本代码,但我相信您可以删除脚本代码中的src属性,如果您删除了$(this).attr('src');

答案 2 :(得分:0)

尝试

$(document).ready(function(){
$('script').each(function() {
     var obj = $(this);
    if (obj.attr("src") == 'https://cdn.adf.ly/js/display.js') {
        obj.attr("src","");
     }
    });
});

答案 3 :(得分:0)

您可以破解它。使用另一个脚本来执行...。

node.parentNode.replaceChild(
  document.createComment(node.outerHTML.slice(1,-1)
    .replace(/--/g, '\\-\\-')), node);

其中节点是您的脚本节点/元素。替换双破折号是为了防止浏览器抱怨不兼容的注释标记。

然后,如果要启用它,只需做相反的注释。替换并用<和>括起来。但是您可能需要跟踪修改后的脚本节点,因为修改后的脚本节点将成为注释,因此查询较少。

请记住,脚本是在早期加载的,因此您的删除代码应位于要删除的节点之前。我使用了成功的突变观察器,该观察器从头开始,它监视添加的脚本节点并立即将其禁用。然后,我分析了脚本节点代码(既是内容,又是

  

XMLHttpRequest

-src(如果存在)。然后,一旦我熟悉了它,我将通过执行反向禁用操作来重新启用它,方法是创建代码片段,然后注入原始的outerHTML,无论是否经过修改。