是否可以在 <script>
标签执行时插入 DOM HTML 元素?就像 document.write()
函数一样,它在执行时立即将文本插入到 DOM 中。
[更新]
是的,就是这样!这是我想到的:
var injectElement = function (element) {
//Function that generates random id
var randomID = function () {
var id = '';
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for( var i=0; i < 5; i++ )
id += chars.charAt(Math.floor(Math.random() * chars.length));
return id;
};
var id = randomID();
//Adding placeholder element
document.write('<div id="' + id + '"></div>');
//Injecting new element instead of placeholder
var placeholder = document.getElementById(id)
placeholder.parentNode.replaceChild(element, placeholder);
};
最佳答案
是的,这是可能的:
<script>
var arrScripts = document.getElementsByTagName('script');
var currScript = arrScripts[arrScripts.length - 1];
var newNode = document.createElement('div');
newNode.innerHTML = 'This is a DIV';
currScript.parentNode.appendChild(newNode);
</script>
此代码首先在文档中定位当前脚本 block ,然后在其后面附加 DOM 元素。
关于JavaScript 在执行点插入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926353/