18910140161

被误解的document.write

顺晟科技

2021-06-16 10:34:52

250

原因:

1.1.xhtml中的不兼容性

2.页面加载后,整个页面将被重绘(这应该是最关键的)

3.它不能指定插入位置

三个例子让你更好地理解文件

1.特点1:直接调用document.write不调用document.open()会自动调用document.open()

打开控制台并执行以下代码一次

Document.write(1) //结果是:1

Document.write(1) //结果是:11

Document.close() //关闭文档流并强制呈现

Document.write(1) //这里会自动执行document.open()重新渲染整个页面,结果是1

2.特性2:当在onload中执行时(一旦文档流被渲染),整个文档流将被替换

!声明文档类型

html lang='en '

meta charset='UTF-8 '

标题文档/标题

/head

body on load=' NewContent();'

H1原文/h1

脚本

函数newContent() {

document . open();

文件。write(' h1new content 1/h1 ');

document . close();

document . open();

Document.write('h1新内容2/h1 ');

document . close();

}

/script

/body

/html

结果是:新内容2

3.特征3:如果文档流是浏览器创建的,不能手动关闭,document.close()函数只能关闭document.open()函数创建的文档流。

!声明文档类型

html lang='en '

meta charset='UTF-8 '

标题文档/标题

/head

身体

H1原文/h1

脚本

函数newContent() {

document . open();

文件。write(' h1new content 1/h1 ');

document . close();

document . open();

Document.write('h1新内容2/h1 ');

document . close();

}

new Content();

/script

/body

/html

结果依次是三行:原始文本、新内容1和新内容2

特性4:相对于特性3中的document.write,后者在操作DOM(insertAdjacentHTML)[很多人在网上说的替换解决方案]的方式上性能会更好。

InsertAdjacentHTML的类似DOM操作是网上很多人说的解决方案,但是网上的解决方案是和特性二的document.write比较,确实比特性二的document.write性能更好,因为不需要重画整个页面。

与document.write in特性三相比,insertadjacenttml具有控制插入位置的优势,但性能并不高,因为insertadjacenttml需要先获取DOM元素,然后通过DOM操作写入内容,而document.write in特性三在渲染时直接写入文档流,理论上优于document.write in特性三

接下来看看代码

!声明文档类型

html lang='en '

meta charset='UTF-8 '

标题文档/标题

/head

body id='xixi '

H1原文/h1

脚本

函数newContent() {

document . open();

文件。write(' h1new content 1/h1 ');

document . close();

var time1=新日期();

document . open();

Document.write('h1新内容2/h1 ');

document . close();

var time 2=new Date();

Console.log('document.write耗时: '(时间2-时间1))

}

new Content();

var time3=新日期();

var D1=document . getelementbyid(' Xixi ');

D1 . insertadjacenthtml(' afterend ',' div id=' two ' insertadjacenthtml/div ');

var time4=新日期();

console . log(' insertadjacenthtml取:' (time4-time3))

/script

/body

/html

运行结果: (

Document.write需要:0个小时

InsertAdjacentHTML取:1

[的确,用三个特征来写文档会更好]

总结:我们对文档编写功能有一些误解。不是说document.write函数有问题,而是觉得不对的人用错了。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航