2010-08-02 82 views
3

我在一个ASP.net网站中有一个页面,我有多个内容占位符,具有JavaScript功能的脚本标记和其他元素。我隐藏所有内容持有人和其他HTML元素使用JavaScript,除了我想要显示的div。但是我得到了该页面中运行的其他脚本。我如何删除它们?使用JavaScript删除不必要的JavaScript

任何想法?

EDIT1

让我们考虑我接下来的页面

<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?

+0

删除什么?脚本元素被加载后?你能显示一些代码吗? – 2010-08-02 08:35:52

+0

重新更新:嗯。我认为你不可以,因为脚本必须*卸载*并且由它做出的任何更改都会回滚。任何机会摆脱他们在服务器端? – 2010-08-02 08:47:03

回答

1

你可能会尝试的一件事是将不必要的函数重新分配给一个什么都不做的新函数。毕竟,Javascript函数是第一类对象,因此可以为它们分配一个新的值。这不会从您的页面中删除这些行,但它会使这些功能无用。如果您想暂时关闭它们,请将它们的值分配给另一个变量,然后重新分配它们。您始终可以将它们切换回保存在另一个变量中的值。

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

后...

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

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

这是安全的,因为它意味着在调用这些函数的任何其他代码将不会导致错误 - 他们只是不会做任何事情。

给它一个去吧,让我知道你如何得到。

编辑: 我已经证实,这种方法应该工作。在这里,我将功能从Does Something切换到另外的功能。

<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