2012-06-22 78 views
0

假設我有一個主頁使用iframe對象作爲緩衝區從同一個域(出於安全原因)加載外部頁面。 我選擇了這種方法,因爲XMLHttpRequest無法從所有瀏覽器中的字符串外部xhtml內容解析。使用javascript從頭刪除javascript標記

將內容加載到iframe之後,我使用「contentDocument」屬性「竊取」它的內容,然後將所有css樣式和腳本標籤附加到父項頭並最終刪除iframe(請注意CSS腳本在第二個文檔中內聯,所以根本沒有外部鏈接)。

現在一切正常 - 我可以調用新的JavaScript函數和CSS的作品。

我的問題是:我能夠管理刪除新附加的CSS樣式,但與JavaScript不起作用。有沒有解決方案可以從同一個文檔中刪除標題的新添加的腳本標記?

我甚至在絕望中嘗試過這種(CSS消失,仍然是JavaScript的...)

function emptyheader() 
    { 
     /* var container = document.getElementById("container"); */ 

     var header = document.getElementsByTagName('head')[0]; 

     /* styles = header.getElementsByTagName('style'); */ 
     /* scripts = header.getElementsByTagName('script'); */ 

      while(header.hasChildNodes()) 
      header.removeChild(header.firstChild);  
    } 
+0

相信我看到了同樣的問題之前,這裏堆過流,請搜索更 – shareef

+3

一旦你的Javascript運行時,「刪除」它不會撤銷它做到了。 –

+0

我不想讓它撤銷它做的事情,我只是想從頭部刪除腳本的孩子,一旦我不需要它們。 –

回答

0

我不是託我明白你的意思。但是這裏有一個例子,你可以如何添加,然後刪除一個腳本(據我所知它是okey添加腳本標記到正文)。

<script> 
function addAndRemoveScript() { 
    var a = document.createElement("script"); 
    a.src = "yourscript.js"; 
    document.body.appendChild(a); 
    document.body.removeChild(document.body.getElementsByTagName("script")[0]) 
    document.body.removeChild(document.body.getElementsByTagName("script")[0]) 
} 
window.onload = addAndRemoveScript(); 
</script> 
+0

不,這些腳本不是外部的,它們在第二個文檔中是內聯的 - 正如我已經提到的那樣。我想要加載一個外部文檔,同時嵌入css/javascript,然後在不需要的時候刪除它們。 –

+0

這只是一個如何從HTML中添加和刪除腳本標記的例子。艱難的JavaScript仍然會工作(因爲它在DOM中),我現在看到,這是你的問題...爲此我沒有解決方案(我不認爲有可能一旦它在那裏禁用它)。 – user1087110

+0

我明白了,但這不是很諷刺嗎?您可以刪除外部腳本 - 按照您的示例,但不允許刪除內聯腳本:( –