使用JavaScript移除不必要的JavaScript代码

3
我在一个ASP.net网站上有一个页面,其中我有多个内容占位符、带有JavaScript函数的脚本标签和其他元素。我使用JavaScript隐藏了所有内容占位符和其他HTML元素,除了一个我想要显示的div。但是我得到了在该页面中运行的其他脚本。如何删除它们?
有什么想法吗?
编辑1:
让我们考虑以下页面。
<html>
<head>

    <script type="text/javascript">
        alert("unnecessary script")
    </script>

</head>
<body>

    <script type="text/javascript">
        alert("another one")
    </script>

    <div id="div1">
        Div 1</div>
    <div id="div2">
        Div 2</div>
    <div id="div3">
        Div 3</div>

    <script type="text/javascript">
        alert("one more")
    </script>

</body>
</html>

我在另一个页面的iFrame中加载此页面,在框架的OnLoad()中调用HideUnneededHTML()函数,该函数隐藏除div2以外的所有内容。如何在其加载之前删除不必要的Javascript代码?


移除什么?脚本元素被加载后?你能展示一些代码吗? - Pekka
关于您的更新:嗯,我认为您不能这样做,因为脚本必须被“卸载”,并且由它所做出的任何更改都将被回滚。有没有可能在服务器端摆脱它们? - Pekka
1个回答

1
你可以尝试的一件事是将不必要的函数重新分配给一个什么也不做的新函数。毕竟,Javascript 函数是一等对象,因此它们可以被分配一个新值。这不会从页面中删除这些行,但它会使这些函数无用。如果你想暂时关闭它们,可以将它们的值分配给另一个变量,然后重新分配它们。你总是可以将它们切换回保存在其他变量中的值。
<script type="text/javascript">
    function myAmazingFunction(){
       alert("Does Something");
    }
</script>

稍后...

<script type="text/javascript">
    myAmazingFunction = function(){};

    //Now, call it... 
    myAmazingFunction();
</script>

这是安全的,因为它意味着调用这些函数的任何其他代码都不会导致错误 - 它们只是不会执行任何操作。

试一试,让我知道你的进展如何。

编辑: 我已确认这种方法应该可以工作。在这里,我将函数从“做某事”切换到“做其他事情”,然后再切回来。

<script type="text/javascript">
    function myAmazingFunction() {
        alert("Does Something");
    }
    myAmazingFunction();
    var temp = myAmazingFunction;
    myAmazingFunction = function() { alert("Does Something Else"); };
    myAmazingFunction();
    myAmazingFunction = temp;
    myAmazingFunction();
</script>

结果按照以下顺序显示3个弹出框:

Does Something
Does Something Else
Does Something

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接