[英]How to inject type attribute into all script tags via javascript
我想知道如何查詢所有腳本標記並設置隨機屬性。 我試過的東西不起作用:
document.getElementsByTagName("script")[0].setAttribute("data-foo", "bar");
它只匹配第一個腳本標記。 (請不要jQuery。我喜歡它,但不是現在。它還需要跨瀏覽器,因此querySelectorAll
將無法工作)。
好的,事實證明,純JavaScript查詢選擇器只會在加載時選擇內容(正如Kolink指出的那樣,系統解釋了)。 所以我必須在其他腳本標簽之后添加設置屬性的腳本。
一種可能性是使用document.write
將您的其他腳本動態寫入頁面。
這是一個經典案例,其中document.write
非常有用。
// In main/powerhouse
// list of script sources
var scripts = ["script1.js", "script2.js", "script3.js"]
for (var i = 0; i < scripts.length; i++)
document.write('<scr', 'ipt type="text/javascript" src="', scripts[i], '"></scr', 'ipt>');
現在腳本將在當前運行的腳本之后編寫,並將按預期同步加載。
你不能。
請參閱,當“主”腳本運行時,其他腳本尚不存在。
唯一的解決方案是使用onload
或DOMContentLoaded
事件推遲類型設置。
問題在於,在觸發時,其他腳本將被添加到頁面並運行(大多數瀏覽器)或忽略(舊IE)。 在此階段設置它們的type
無效。
因此,不是試圖找到永遠不會起作用的變通方法,為什么不嘗試首先編寫適當的HTML?
PS。 您對IE8不起作用的評論表明您處於Quirks模式。 如果您還沒有<!DOCTYPE>
,請添加<!DOCTYPE>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.