簡體   English   中英

如何通過javascript將type屬性注入所有腳本標記

[英]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>');

現在腳本將在當前運行的腳本之后編寫,並將按預期同步加載。

你不能。

請參閱,當“主”腳本運行時,其他腳本尚不存在。

唯一的解決方案是使用onloadDOMContentLoaded事件推遲類型設置。

問題在於,在觸發時,其他腳本將被添加到頁面並運行(大多數瀏覽器)或忽略(舊IE)。 在此階段設置它們的type無效。

因此,不是試圖找到永遠不會起作用的變通方法,為什么不嘗試首先編寫適當的HTML?

PS。 您對IE8不起作用的評論表明您處於Quirks模式。 如果您還沒有<!DOCTYPE> ,請添加<!DOCTYPE>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM