Javascript 关于innerHTML的几个问题
我正在转换一个在巴西创建的老程序员的笑话程序,它类似于但使用的是艺术术语,而不是businnes的胡言乱语 由于程序太旧(geocities年代太旧),它使用了大量document.write,而不是InnerHtml 第一个问题是,在innerHTMLs中放置大量代码是否安全?由于原始程序加载4组数组,其中包含可以组合成伪文章的每一段文本,因此这是一段代码:Javascript 关于innerHTML的几个问题,javascript,iframe,innerhtml,window.open,document.write,Javascript,Iframe,Innerhtml,Window.open,Document.write,我正在转换一个在巴西创建的老程序员的笑话程序,它类似于但使用的是艺术术语,而不是businnes的胡言乱语 由于程序太旧(geocities年代太旧),它使用了大量document.write,而不是InnerHtml 第一个问题是,在innerHTMLs中放置大量代码是否安全?由于原始程序加载4组数组,其中包含可以组合成伪文章的每一段文本,因此这是一段代码: new_window.document.write("<body bgcolor=\"#000000\">"); new_w
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)
.....
...
new\u window.document.write(“”);
新建窗口。文档。写入(“”)
新建窗口。文档。写入(““+atitle+”
”);
firstshot=1;
段落=0;
而(行数>0){
if(firstshot==1){
如果(第%101行==0和第%19行==0){
新建_window.document.write(tab0.chr(1,0)+tab0.chr(0,1)+tab3.chr(0,0)
.....
...
这在一英寸长的非嵌套代码块中继续,整个代码都在这里
我正在试验,这就是我目前得到的结果:
<body>
<div id="target"></div>
<div id = "myDiv"></div>
<span id = "mySpan"></span>
<br>
<button id="restore">restore</button>
<p> </p>
<form name="form1" method="post" action="">
<input type="submit" name="remove" id="remove" value="remove">
</form>
<p> </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;
});
恢复
var消息=
“”+
“”+
“”+
“”+
“”+
“”
var message2=
''+
''+
“您的浏览器不支持iFrame。”+
''
document.getElementById(“myDiv”).innerHTML=message;//将innerHTML用于块和内联HTML元素
document.getElementById(“删除”).addEventListener(“单击”),函数()
{
document.getElementById(“myDiv”).innerHTML=message2;
});
document.getElementById(“还原”).addEventListener(“单击”),函数()
{
document.getElementById(“myDiv”).innerHTML=消息;
});
它可以像预期的那样工作,只需按一下按钮,就可以加载一些html内容,然后用iframe替换这些内容
iframe是解决这一问题的最佳解决方案吗?还是用js替换整个html是一条出路
var消息=
“somecode”+
“somecode”+
到目前为止看起来还是安全的,但就我开始转换而言,我会头疼吗?或者这种方法看起来很简单
我应该使用window.onload而不是替换内容持有者div吗?我的两分钱
在innerHTMLs中放置大量代码是否安全
安全,是的…易于维护,不是。前端代码是为客户端编写的,因此如果他们选择自己进行黑客攻击,就让他们自己进行黑客攻击……当然,发送回服务器的任何内容都应该经过清理,不可信,但这是一个完全不同的问题
在我看来,最大的问题是可维护性
接下来,在JS中,将其重构为一个单独的文件,开始缓存变量,使代码更易于查看
最后,您需要iFrame吗?还是需要一个新窗口?您不能简单地将“艺术术语”附加到当前html的底部吗?这样就省去了iFrame的麻烦
我是非jQuery的完全拥护者,但对您来说,使用jQuery的HTML编辑API可能是一个好主意。可以帮助将一些问题抽象为更可读和可维护的形式。再说一次,vanilla JS真的很棒,如果可以这样做,这是一个很好的学习方式。我不会说它不安全,但它确实很糟糕确实是这样……为什么需要使用JS构建视图,为什么不使用HTML?(
--headeaches;
)抱歉,你用html构建视图是什么意思?我觉得我有点困惑,你能说得更具体一点吗?给我提示,我来做作业。你用JS编写html,这不是最常见的。通常所有的html代码都在一个.html文件中。正如Sten在他的文章中所写的,这是不可维护的!Gr吃吧!千万不要这样做,我想知道人们是如何管理两个iFrame的内容的。将内容放在不同的文件中似乎是最好的方式,谢谢你的洞察力。