前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【春节日更】小知识 — document.write会不会覆盖页面内容

【春节日更】小知识 — document.write会不会覆盖页面内容

作者头像
用户9914333
发布2022-07-22 14:13:19
6300
发布2022-07-22 14:13:19
举报
文章被收录于专栏:bug收集bug收集

今日分享小知识

document.write会不会覆盖页面内容

先看看示例代码,再看 write 的介绍

01

示例代码

首先,直接来看看下面的示例,判断 document.write 是否会覆盖页面上的内容

示例一:

代码语言:javascript
复制
<div>
    原来网页内容
</div>
<script type="text/javascript">
       document.write("新的内容");
</script>

示例二:

代码语言:javascript
复制
<div>
    原来网页内容
</div>
<script type="text/javascript">
   window.onload=function (){
       document.write("新的内容");
   }
</script>

示例三:

代码语言:javascript
复制
<div>
    原来网页内容
</div>
<button type="button" id="btnAddContent">添加</button>
<script type="text/javascript">
   var btn = document.getElementById("btnAddContent");
   btn.onclick=function (){
       document.write("新的内容");
   }
</script>

结果:

示例一,不覆盖

示例二,会覆盖

示例三,会覆盖

02

document.write 、

document.open的介绍

Document.write() 方法将一个文本字符串写入一个由 document.open() 打开的文档流(document stream)

注意: 因为 document.write 需要向文档流中写入内容,所以,若在一个已关闭(例如,已完成加载)的文档上调用 document.write,就会自动调用 document.open,这将清空该文档的内容,在document.open方法会有具体解释。

Document.open() 方法打开一个要写入的文档。

这将会有一些连带的影响。例如:

  • 此时已注册到文档、文档中的节点或文档的window的所有事件监听器会被清除。
  • 文档中的所有节点会被清除。

03

题目解析

在页面加载完成后(会自动关闭文档 —— document.close()),而 onload 与 onclick 事件在调用时,页面均已加完成,

所以,调用 document.write 时,会先调用 document.open 方法,而 open 方法会把文档中的所有结点清除,这就是 document.write 使页面内容被覆盖的原因

故:示例二,示例三均会被覆盖,示例一不被覆盖

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档