gpt4 book ai didi

javascript - 关于innerHTML的几个问题

转载 作者:行者123 更新时间:2023-12-03 11:32:49 27 4
gpt4 key购买 nike

我正在转换一个在巴西创建的老程序员的笑话程序,类似于 MIT's SCIgen但使用艺术术语而不是商业胡言乱语。

由于该程序太旧了(geocities 时代旧了),它当然使用了大量的 document.write 而不是innerHTHML。

第一个问题是,在innerHTML 中放置大量代码是否安全?由于原始程序加载了 4 组数组,其中包含可以组合起来形成伪文章的所有可能的文本,因此这是一段代码:

new_window.document.write("<body bgcolor=\"#000000\">");
new_window.document.write("<body text=\"#00FF00\">")
new_window.document.write("<p align=\"center\"><b>"+atitle+"</b><hr></p>");

firstshot = 1;
paragraph = 0;
while(lines > 0) {
if (firstshot == 1) {
if (lines % 101 == 0 && lines % 19 == 0) {
new_window.document.write(tab0.chr(1,0)+tab0.chr(0,1)+tab3.chr(0,0)
.....
...

这在一英寸长的非嵌套代码块中继续,整个代码在这里 http://jsfiddle.net/jmqdx09g/

我正在尝试,这是我到目前为止所得到的:

<body>
<div id="target"></div>
<div id = "myDiv"></div>
<span id = "mySpan"></span>
<br>

<button id="restore">restore</button>
<p>&nbsp;</p>
<form name="form1" method="post" action="">
<input type="submit" name="remove" id="remove" value="remove">
</form>
<p>&nbsp;</p>
</body>
<script type = "text/javascript">
var message =
'<li><a href="../index.html">Home</a></li>'+
'<li><a href="../about">About</a></li>'+
'<li><a href="../contact/index.html">Contact</a></li>'+
'<li><a href="../works/index.html">Works</a></li>'+
' <li><a href="../projects/index.html">Projects</a></li>'+
'<li><a href="../curriculum/index.html">Curriculum</a></li>'

var message2 =
'<div class="content">'+
'<iframe src="/yourpage.html" frameborder="0" width="600" height="650" scrolling="no">'+
'<p>Your browser does not support iframes.</p>'+
'</iframe></div>'

document.getElementById("myDiv").innerHTML = message; // use innerHTML for block and inline HTML elements
document.getElementById("remove").addEventListener("click", function ()
{
document.getElementById("myDiv").innerHTML = message2;
});

document.getElementById("restore").addEventListener("click", function ()
{
document.getElementById("myDiv").innerHTML = message;
});

它按预期工作,加载一些 html 内容,按一下按钮,内容就会被 iframe 替换

iframe 是最好的解决方案还是用 js 替换整个 html 是最佳选择?

的 变量消息 = '一些代码'+ '一些代码'+

到目前为止看起来很安全,但就我进入转换而言,我会头痛吗?或者这个方法看起来很简单?

我应该使用 window.onload 而不是替换内容持有者 div 吗?

最佳答案

我的两分钱值...

Is it safe to place like tons of code inside of innerHTMLs?

安全,是的...易于维护,不。前端代码是针对客户端的,因此如果他们选择黑客攻击自己,那就让他们......当然,发送回服务器的任何内容都应该被清理并且不被信任,但这是一个完全不同的问题。

我认为最大的问题是可维护性。

接下来是JS,将其重构到一个单独的文件中,开始缓存变量使代码更容易查看。

最后,您需要 iFrame 吗?还是新窗口?难道你不能简单地将“艺术术语”附加到当前 html 的底部吗?从而省去了 iframe 的麻烦。

我是非 jQuery 的完全拥护者,但也许对您来说使用 jQuery 的 HTML 编辑 API 可能是一个好主意。可以帮助将一些问题抽象为更具可读性和可维护性的形式。话又说回来,vanilla JS 真的很棒,如果能这样做的话,这就是一个很好的学习方式。

关于javascript - 关于innerHTML的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26668775/

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