繁体   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