2010-08-02 68 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