如何通过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>');
现在,脚本将在当前运行的脚本之后编写,并将按预期同步加载。
你不能。
请看,当"主"脚本运行时,其他脚本还不存在。
唯一的解决方案是用onload
或DOMContentLoaded
事件推迟类型设置。
问题是,到启动时,其他脚本将被添加到页面中,要么运行(大多数浏览器),要么被忽略(旧的IE)。在此阶段对它们设置type
没有任何效果。
因此,与其试图找到永远不会奏效的解决方案,为什么不首先尝试编写正确的HTML呢?
PS。你对它在IE8中不起作用的评论表明你处于Quirks模式。如果您还没有<!DOCTYPE>
,请添加它。
相关文章:
- 性能:动态脚本注入与服务器渲染脚本
- FireFox扩展对TinyMCE编辑器执行脚本注入
- 如何防止脚本注入
- 防止使用 innerHTML 进行脚本注入
- 如何将CSS样式应用于由Javascript脚本注入和样式化的HTML,这是我无法控制的
- 将内容脚本注入到不同扩展名的操作弹出窗口中的 iframe 中
- 交叉骑士 - 如何将脚本注入特定选项卡?以及如何重新加载特定选项卡
- BHO Internet Explorer插件-脚本注入问题
- 将脚本注入其他人的最简单方法是什么's域
- 获取当前活动的输入字段.Chrome内容脚本.脚本注入
- 在web上使用脚本注入的自动化测试
- Chrome扩展:连接"内容脚本"注入DOM
- 不能使用jquery访问通过Google chrome内容脚本注入的iframe内容
- 什么阻止Require'ed脚本注入更多的脚本标签?
- 跨站点脚本注入
- 为什么要在通过谷歌Chrome扩展将脚本注入预先存在的网页后删除脚本
- 如何对外部脚本注入依赖项
- Chrome扩展如何将我的内容脚本注入所有Facebook页面
- 使用java脚本注入另一个页面
- 如何在没有jQuery的情况下将脚本注入文档