什么情况下document.write会覆盖页面及覆盖原理解释

简介: 会覆盖页面的情况1                              蚂蚁部落       window.onload=function(){  document.write("分享互助");}     蚂蚁部落欢迎您   从以上代码的可以看出document.

会覆盖页面的情况

1

<!DOCTYPE html>      
<html>      
<head>      
<meta charset=" utf-8">      
<meta name="author" content="www.google.com" />      
<title>蚂蚁部落</title>     
<script type="text/javascript">  
window.onload=function(){
  document.write("分享互助");
}
</script>
</head>  
<body>  
<div>蚂蚁部落欢迎您</div>
</body>  
</html>

从以上代码的可以看出document.write()函数将原来的文档内容清空了,下面介绍一下出现此种情况的原因:
window.onload事件是在文档内容完全加载完毕再去执行事件处理函数,当然文档流已经关闭了,这个时候执行doucment.writ()函数会自动调用document.open()函数创建一个新的文档流,并写入新的内容,再通过浏览器展现,这样就会覆盖原来的内容。

2

<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>

<p>My First Paragraph.</p>
<button onclick="myFunction()">点击这里</button>

<script>
function myFunction()
{
document.write("糟糕!文档消失了。");
}
</script>
</body>
</html>

点击button时会覆盖页面

 

不会覆盖页面的情况

<!DOCTYPE html>      
<html>      
<head>      
<meta charset=" utf-8">      
<meta name="author" content="http://www.softwhy.com/" />      
<title>蚂蚁部落</title>     
<script type="text/javascript">  
document.write("分享互助");
</script>
</head>  
<body>  
<div>蚂蚁部落欢迎您</div>
</body>  
</html>

在以上代码中,原来的文档内容并没有被清空,这是因为当前文档流是由浏览器所创建,并且document.wirte()函数身处其中,也就是执行此函数的时候文档流并没有被关闭,这个时候不会调用document.open()函数创建新文档流,所以也就不会被覆盖了。

 

覆盖原理解释

 

加载文档的时候就像是创建了document对象,可以向文件流写入东西,就像在script标签里面直接写一句

<script>

    document.write(“123”);

</script>

那个document是一边加载一遍进行写操作,但是文档加载成功之后,这个document对象就会关闭了。

如果你这时你又重新加载了文档,比如说你调用了函数(在js中运行编写好程序后只是声明了有这个函数,但并没有调用,所以你一旦调用,就会重新加载文档),如下

 

<script>

   function  reUse(){

     document.write(“123”);

  }

</script>

就会新建一个document对象,它会覆盖你之前的内容。这跟你函数放的位置无关,无论是在其他输出语句的前后,还是说在head或body里面写就不一样,而是调用的时机,要明确什么时候文档会重新加载。

 

明确覆盖的原理后,主要在于是否会重新加载文档。重新加载文档的时机是什么:调用函数,或许还有其他。

 

相关文章
|
安全 网络安全 数据安全/隐私保护
远程桌面连接出现了内部错误怎么解决?
远程桌面连接出现了内部错误怎么解决?
|
虚拟化 Windows
Windows 7 / Windows Server 2008 R2 完美激活工具 Windows Loader 2.1.7
Windows 7 / Windows Server 2008 R2 完美激活工具 Windows Loader 2.1.7   Windows Loader 激活原理:预装OEM版Windows 7的品牌电脑是这样激活 Windows 7的:三个条件:1、BIOS mod 存在可激活系统的SLIC2.1;2、key;3、证书。
21693 0
|
存储 Docker 容器
docker中创建一个命名的数据卷
【10月更文挑战第14天】
173 1
|
存储 数据处理
GDPR
【10月更文挑战第7天】GDPR
704 7
|
安全 云计算 开发者
开源软件的影响力
本文分析了开源软件在推动技术创新、多样化商业模式、安全风险管理以及在各行业应用案例中的影响力,强调了开源软件通过开放源代码、协作、教育、社区支持、透明度和低成本特性,在信息技术领域带来的积极效应和未来发展的潜力。
563 0
|
8月前
|
JSON 监控 数据可视化
Apipost SocketIO调试指南:对比Postman/Apifox的实操优势
实时通信调试工具可能已「过时」!许多主流工具如Apifox不支持SocketIO协议,导致调试效率低下。而Apipost作为国产工具,原生支持SocketIO,提供自定义事件管理、连接状态可视化等功能,极大提升了实时通信开发的效率和准确性。选择正确的工具,告别「伪实时」调试,提升团队协作与维护效率。
250 15
|
9月前
|
人工智能 自然语言处理 决策智能
智能体竟能自行组建通信网络,还能自创协议提升通信效率
《一种适用于大型语言模型网络的可扩展通信协议》提出创新协议Agora,解决多智能体系统中的“通信三难困境”,即异构性、通用性和成本问题。Agora通过标准协议、结构化数据和自然语言三种通信格式,实现高效协作,支持复杂任务自动化。演示场景显示其在预订服务和天气预报等应用中的优越性能。论文地址:https://arxiv.org/pdf/2410.11905。
293 6
|
存储 运维 前端开发
如何自己搭建一个网站?
‌确定需求和目标‌:在开始搭建网站之前,明确网站的需求和核心,网站主要是什么途径:展示产品或服务、提供信息和资源、增加销售、提升品牌形象等。
653 3
|
并行计算 数据可视化
ECCV 2024:JHU上交等提出首个可渲染X光3DGS!推理速度73倍NeRF,性能提升6.5dB
【10月更文挑战第8天】近日,约翰斯•霍普金斯大学和上海交通大学等机构的研究人员提出了一种名为X-Gaussian的新型3D Gaussian Splatting框架,用于X光新视角合成。该框架通过优化辐射性Gaussian点云模型和可微分辐射光栅化技术,显著提升了X光成像的渲染质量,同时大幅减少了训练时间和推理时间。实验结果显示,X-Gaussian在性能上比现有方法提升了6.5dB,训练时间减少了85%,推理速度提高了73倍。此外,该框架在稀疏视角CT重建中也展现出巨大潜力。
291 4
|
前端开发 JavaScript 开发者
javascript实现黑客帝国代码雨特效背景效果
javascript实现黑客帝国代码雨特效背景
341 0
javascript实现黑客帝国代码雨特效背景效果