2012-03-23 51 views
1

這是我...只要將<script>附加到身體上,就立即生效?

a= document.createElement('div'); 
a.innerHTML="<script>alert(1)</script>"; 
document.body.appendChild(a); 

alert(1)犯規得到執行。

@rocket @ m90我知道,但我不能使用該方法,因爲我有很多其他標籤。基本上,我從ajax獲得一個網頁,剝離頭標籤,並將其嵌入到文檔中。現在ajax數據也有一些我想執行的腳本標記...

+1

也許你已經看到了這一點,但也許不是:http://stackoverflow.com/questions/889967/jquery-load-call -doesnt-execution-javascript-in-loaded-html-file – m90 2012-03-25 09:17:56

回答

2

你不應該使用的.innerHTML<script>標籤。相反,你可以創建一個新的script元素,這樣做只是這樣的:

a = document.createElement('script'); 
a.textContent = "alert('1');" ; 
document.body.appendChild(a); 
1

只要腳本中有"</script>",JavaScript解釋器就會將此視爲腳本塊的結尾。即使它被引用。

用途:a.innerHTML="<script>alert(1)</sc" + "ript>";

+1

你是絕對正確的,但即使你有改進,仍然無法正確執行。 – apsillers 2012-03-23 15:22:48

2

您需要太創建腳本元素:

var a = document.createElement('div'), 
    b = document.createElement('script'); 
b.textContent = 'alert(1)'; 
a.appendChild(b); 
document.body.appendChild(a); 
相關問題