我一直在教自己编程大约一个月,最近我遇到了JavaScript函数document.write()
。我听过很多人说使用它是不好的做法,主要是因为,如果使用不当,它可能会覆盖整个页面。但是,如果覆盖整个页面是预期的结果,使用它仍然是危险的吗?似乎我是唯一一个这样做的人,所以我不确定这是否是一个革命性的概念,或者它是否是一个毫无疑问的坏主意。我担心这很可能是后者。
如果它有帮助,我使用它的主要例子是我和我的兄弟一起写的“选择你自己的冒险”游戏,其中我不希望先前的决定继续显示给玩家。
答案 0 :(得分:1)
document.write
的一个合法用途是检查您的jQuery(或任何其他脚本)是否已从CDN加载,如果没有回退到脚本的本地副本上。代码如下所示:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
if (!window.jQuery) {
document.write('<script src="/path/to/your/jquery"><\/script>');
}
</script>
答案 1 :(得分:1)
我听过很多人说使用它是不好的做法,主要是因为如果使用不当,它会覆盖整个页面。
我会说重要的design disadvantages是你无法控制文档的哪一部分被操纵(你只能在脚本的当前位置写)并且它不是面向对象的(你只能这样做)写序列化的html标记)。
但是,如果覆盖整个页面是预期的结果,使用它仍然是危险的吗?
不,当然不是。但你真的打算这样做吗?
我不希望以前的决定继续显示给玩家。
这听起来不是覆盖整个页面的好理由。最好从DOM中删除特定元素。
答案 2 :(得分:0)
而不是document.write
您可以使用theelement.innerHTML
或
你可以使用jquery
作为
完成此dynamic-page-replacing-content/
例如
$('body').replaceWith(data);
或
$("body").html(newPage);
答案 3 :(得分:0)
您可以使用jquery。对于你想要做的事情可能有点过头了,但是看看它的未来可能会很好。
您可以在页面中添加div
<div id="storyText"></div>
然后你可以像这样添加文本到
<script>$('#storyText').html('This is my new story text');</script>
您只需要在页面中包含jquery
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
答案 4 :(得分:0)
document.write不是首选的一个原因是因为你通常手工连接字符串来制作一些html元素组合,这些很容易出错。例如,缺少结束标记等等。
作为替代方案,假设为了论证你使用jQuery,你可以做这样的事情,(a)犯错的风险较小,(b)得到一个可能更易读的结果:
$('<div></div>')
.css
({
background-color: '#fff',
color: #000
})
.appendTo('#someEmptyDiv');
如果您的HTML很复杂,您可以使用您喜欢的HTML /文本编辑器中编辑的大型片段作为另一种选择,并且干净地布局/缩进并存储在外部文件中。然后,您可以将它们加载到您已经创建的空元素中(也使用jQuery演示):
$.get('someComplicatedTableSnippet.html', function(snippetContent)
{
$('#someEmptyDiv').html(snippetContent);
});
答案 5 :(得分:0)
如果您希望浏览器以默认方式在页面中显示所需的文本,则使用Document.write()。是的,它会覆盖旧文本,因此如果您只想显示后一个文本,则write()是合适的。 但是,如果要添加文本(或其他项),则应使用document.append()。 因此,使用它并不总是一个坏主意,但在一般情况下,其他方法是首选。