document.write()的替代用途

时间:2014-01-15 04:41:14

标签: javascript document.write

我一直在教自己编程大约一个月,最近我遇到了JavaScript函数document.write()。我听过很多人说使用它是不好的做法,主要是因为,如果使用不当,它可能会覆盖整个页面。但是,如果覆盖整个页面是预期的结果,使用它仍然是危险的吗?似乎我是唯一一个这样做的人,所以我不确定这是否是一个革命性的概念,或者它是否是一个毫无疑问的坏主意。我担心这很可能是后者。

如果它有帮助,我使用它的主要例子是我和我的兄弟一起写的“选择你自己的冒险”游戏,其中我不希望先前的决定继续显示给玩家。

6 个答案:

答案 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()。 因此,使用它并不总是一个坏主意,但在一般情况下,其他方法是首选。