我从服务器上得到一个原始JavaScript标记:
"<script>alert('hi');</script>"
现在,我需要将它附加到<body>
,以便它激发。我不能简单地创建一个新的脚本元素,因为这个字符串已经包含了<script>
部分。有类似的东西吗
child = document.createElementFromHTML("<script>alert('hi');</script>");
document.body.appendChild(child)
谢谢你的帮助。
编辑
这就是为什么它不是复制的,大厅监视器:
如果您将div的内部html设置为脚本,它将不会启动。我需要将仅从文本生成的元素附加到正文中。
编辑2
最终解决方案:
window.onload = function() {
document.body.innerHTML += "<script>alert('hi');</script>";
var script = document.scripts[document.scripts.length - 1];
var s = document.createElement("script");
s.textContent = script.textContent;
document.body.removeChild(script);
document.body.appendChild(s);
}
您可以将document.body.innerHTML
与<script>
html字符串连接,在document
中获取最后一个script
的.textContent
,创建script
元素,将script
元素.textContent
设置为从连接的html
<script>
字符串中检索到的值,删除最后的<script>
,将新的<script>
附加到document.body
。
<script>
document.body.innerHTML += "<script>alert('hi');</script>");
var script = document.scripts[document.scripts.length - 1];
var s = document.createElement("script");
s.textContent = script.textContent;
document.body.removeChild(script);
document.body.appendChild(s);
</script>
通过这种方式,您可以在HTML 中插入<script>
标记
var script = document.body.appendChild(document.createElement('script'));
script.text = 'alert("Hi!");'