2010-08-17 88 views
0

我有一個JavaScript函數,這個函數我會寫的Javascript工作不

<script type='text/JavaScript' language='JavaScript'>alert('ha')</script> 

但在執行這個網頁它不工作。這是我的代碼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<script language="javascript" type="text/javascript"> 
function asd() 
{ 
document.write("<script language='javascript' type='text/javascript'>alert('asdasd');</" + "script>"); 
} 
</script> 
</head> 
<body onload="asd();"> 
<span id="gdfg"></span> 
<span>dgdfghfghfghfg</span> 
</body> 
</html> 
+0

你的代碼工作。 – Adam 2010-08-17 16:32:12

+0

在XHTML文檔中(作爲'application/xhtml + xml'),'document.write'是[非法](http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite)。 'script'元素的'language'屬性[已棄用](http://www.w3.org/TR/REC-html40/interact/scripts.html#edef-SCRIPT)。而且,這樣做是不好的做法。只需使用更多標準化的DOM操作功能。這就是說,你分開''不錯。 – 2010-08-17 16:43:57

回答

2

什麼拉斐爾的意思是,當我在Firefox和Chrome瀏覽器測試了這個

window.onload=function() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = '/myalert.js'; 
    document.getElementsByTagName("head")[0].appendChild(script); 
} 

window.onload=function() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    var textNode = document.createTextNode('alert("bla");') 
    script.appendChild(textNode)'; 
    document.getElementsByTagName("head")[0].appendChild(script); 
} 
+0

我真的無法想象第二個例子可能有用的情況。你可以嗎? – 2010-08-17 16:45:46

+0

此示例代碼確實不是非常有用,但它只是一個問題,作者可能正在處理更復雜的代碼。 – Rafael 2010-08-17 16:55:29

+0

是的,我只給了第二個例子來允許原始問題的構造,而不用判斷需要什麼。例如從ajax回覆中提取腳本 – mplungjan 2010-08-17 19:51:11

2

請勿在加載頁面後使用document.write,因爲它會重置整個文檔。 如果您想要添加一些新的元素(如<腳本>標籤)到文檔,請使用DOM(document.createElement,element.appendChild等)。