我想使用 JavaScript 替换一些特定的标签。
我要替换的标签是这些<!--
和-->
. 在这两个标签之间,我有将在页面完全加载时执行的代码。
这是我的代码:
function listen(){
var html = document.getElementsByTagName('html')[0];
[].slice.call(html).forEach(function(el, i){
el.innerHTML.replace('<!--', '<script>').replace('-->', '</script>');
});
}
window.addEventListener('DOMContentLoaded', function(){
listen();
}, false);
<!-- -->
在使用正则表达式之间提取脚本的内容,然后创建一个元素script
并将其添加到正文的末尾以执行。例子
但是,我看不出您在做什么,除非您在页面加载时进行一些处理,然后添加脚本。只是不要那样做;如果您想在解析和加载 DOM 结束时加载脚本,请使用脚本上的属性
defer
,如 @Lorthas 所示。Replace 使用替换的文本创建一个新字符串,它不会修改当前字符串。
因此你应该这样做:
参考:MDN 上的 String.prototype.replace
我认为对于可读性问题,如果您想稍后加载它们,您应该将脚本放在一个文件中,而不是 html 和更多。
如果您想稍后加载它,只需将它们添加到 html 中即可。我给你留了一个小函数来做到这一点:
您只需要传递文件的路径/名称,就可以使用它。
希望这可以帮到你。
如果您想要在加载 DOM(至少我已经理解)后简单地加载某些脚本,请阅读以下内容:
根据https://m.genbetadev.com/javascript/javascript-defer-vs-async 如果将 defer 属性添加到 script 标签,则 Javascript 代码将在页面的所有元素都加载完毕后才会执行。
您还可以确保在关闭正文之前放置脚本标签。Async 和 Defer 来自 HTML5。