gpt4 book ai didi

javascript - 通过 JavaScript 在 DIV 中执行 HTML 代码

转载 作者:行者123 更新时间:2023-11-27 22:56:29 24 4
gpt4 key购买 nike

我见过很多这样的问题,但我的问题略有不同。

我编写了一个 HTML 代码,可以在 <div> 中执行另一个 HTML 代码.该页面如下所示: enter image description here

这个页面的代码是这样的:

<html>
<meta name="viewport" content="width=device-width"/>
<style>
html, body{margin: 0; padding: 0;}
textarea {width:100%; height: 28%;}
div {display: block; width: 100%;}
</style>
<body onload="loadData()" onbeforeunload="storeData()" onunload="this.onbeforeunload()">
<div style="overflow: auto;">
<textarea id="code"></textarea>
</div>
<div>
<button onclick="run()" style="float: left;">Run</button>
<button onclick="setSize()" style="float: right;">Set size</button>
<input type="number" id="size" style="float: right; text-align: right;"/>
</div>
<div id="result" style="overflow: auto; height: 70%; border-top: 2px solid black;"></div>
</body>
<script>
const editor=document.getElementById('code');
function run()
{
var res=document.getElementById('result');
var input=editor.value;
res.innerHTML=input;
}
function setSize()
{
editor.style.fontSize=document.getElementById("size").value;
document.getElementsByTagName("button")[0].style.fontSize=document.getElementById("size").value;
document.getElementsByTagName("button")[1].style.fontSize=document.getElementById("size").value;
document.getElementsByTagName("input")[0].style.fontSize=document.getElementById("size").value;
}
function storeData()
{
var data=document.getElementById("code").value;
var txtSize=document.getElementById("size").value;
localStorage.setItem("stored", data);
localStorage.setItem("size", txtSize);
}
function loadData()
{
var data=localStorage.getItem("stored");
var txtSize=localStorage.getItem("size");
document.getElementById("code").value=data;
document.getElementById("size").value=txtSize;
editor.style.fontSize=txtSize;
document.getElementsByTagName("button")[0].style.fontSize=document.getElementById("size").value;
document.getElementsByTagName("button")[1].style.fontSize=document.getElementById("size").value;
document.getElementsByTagName("input")[0].style.fontSize=document.getElementById("size").value;
}
</script>
</html>

除一件事外,它工作绝对正确。问题是,如果 <button>已创建并且 onclick属性具有此代码:document.write('Some text'); ,然后整个页面被清除。请参阅以下屏幕截图: enter image description here

enter image description here

那么,您能告诉我有什么方法可以确保不会对原始页面进行任何更改吗?请帮助 10 年级的学生。

最佳答案

不是将“结果”作为常规 div 元素,这意味着代表实际页面的一部分,您在这里想要的是嵌入一个完整的单独页面/上下文,这就是 iframe用于。

我设法通过将 div 替换为 iframe 来完成您想要的,并将“运行”方法中的第一行替换为:

var res=document.getElementById('result').contentDocument.body;

查看此 fiddle举个例子。

关于javascript - 通过 JavaScript 在 DIV 中执行 HTML 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com