news 2026/4/23 18:02:21

document.write详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
document.write详解

JavaScript 中document.write详解

document.write()是 JavaScript 中一个古老且原始的 DOM 操作方法,用于直接向文档流中写入 HTML 内容或文本。它属于早期 DOM Level 0 的特性,现在已被视为不推荐使用的方法。

基本语法
document.write(markup);
  • markup:字符串,可以是纯文本、HTML 标签、脚本等。
  • 可以调用多次,每次写入都会追加到当前文档流。
示例
<!DOCTYPEhtml><html><head><title>document.write 示例</title></head><body><script>document.write("<h1>欢迎来到我的网站!</h1>");document.write("<p>这是通过 document.write 写入的内容。</p>");document.write("<script>alert('Hello!')<\/script>");// 注意转义</script></script></body></html>

页面加载时会直接输出:

<h1>欢迎来到我的网站!</h1><p>这是通过 document.write 写入的内容。</p>

并弹出 alert。

关键特性与行为
  1. 在页面加载阶段(文档流开放时)使用

    • 如果在 HTML 解析过程中调用(如在<script>中直接调用),它会追加内容到当前文档流。
    • 这是它最“正常”的使用场景。
  2. 在页面加载完成后(文档流关闭后)使用

    • 一旦文档加载完成(load事件触发后),再次调用document.write()隐式调用document.open()
    • 这会导致清空整个当前页面(包括所有内容、脚本、样式),然后重新开始写入新内容。
    • 这是一个破坏性操作,极易导致页面空白或丢失数据。

    危险示例

    window.onload=function(){document.write("太晚了!页面被清空了。");};// 结果:整个页面只剩下这句话,原有内容全没了!
  3. 性能问题

    • document.write同步阻塞的,会暂停页面解析和渲染,直到写入完成。
    • 大量使用会严重影响页面加载速度。
  4. 安全性问题

    • 直接写入用户输入内容容易导致XSS 跨站脚本攻击
    document.write(userInput);// 如果 userInput 包含 <script>恶意代码</script>,直接执行!
为什么现在几乎不用document.write
问题说明
破坏性行为页面加载后调用会清空整个页面
阻塞渲染同步操作,拖慢页面加载
不符合现代开发规范违反内容与行为分离原则
安全性差易引发 XSS
已被主流框架抛弃React、Vue、Angular 等都不使用这种方式操作 DOM
推荐的现代替代方案
需求推荐方法
动态插入 HTML 内容element.innerHTML = '内容'
更安全地插入内容element.textContent = '内容'(纯文本)
创建新元素document.createElement()+appendChild()
插入到特定位置insertAdjacentHTML()
响应式更新内容使用现代框架(React、Vue 等)

最佳实践示例

// 代替 document.writeconstcontainer=document.getElementById('output');container.innerHTML="<h1>欢迎来到我的网站!</h1><p>现代方式插入内容</p>";// 或更安全的方式container.insertAdjacentHTML('beforeend','<p>新内容</p>');
特殊注意:广告脚本中的使用

你可能还在一些老旧广告代码中看到:

<script>document.write('<script src="http://ads.example.com/ad.js"></script>');</script>

这是历史遗留问题,现代广告联盟已基本放弃这种方式,改用异步加载。

总结
项目评价
功能强大(可直接写入任意内容)
易用性高(语法简单)
安全性低(易 XSS)
性能差(阻塞渲染)
现代兼容性差(不推荐)
是否应继续使用强烈不推荐,仅用于学习或极特殊场景

结论
document.write是 JavaScript 历史的产物,除非你在维护非常老的代码或进行教学演示,否则永远不要在生产环境中使用它。使用现代 DOM 操作方法才是正确选择。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 8:15:45

Miniconda-Python3.10镜像对国产GPU芯片的支持进展

Miniconda-Python3.10镜像对国产GPU芯片的支持进展 在人工智能和深度学习加速落地的今天&#xff0c;算力平台的选择早已不再局限于NVIDIA GPU与CUDA生态。随着华为昇腾、寒武纪MLU、天数智芯BI等国产AI加速芯片的持续迭代&#xff0c;如何让开发者“无感”地从国际平台迁移到…

作者头像 李华
网站建设 2026/4/23 9:44:09

PyTorch安装教程GPU版本:基于Miniconda-Python3.10镜像快速部署

PyTorch GPU 环境快速部署&#xff1a;基于 Miniconda-Python3.10 镜像的实战指南 在高校实验室里&#xff0c;一个学生正焦急地敲着键盘——他的 PyTorch 训练脚本报错 CUDA not available。他已经花了整整两天尝试安装驱动、配置 CUDA、降级 Python 版本……但每次解决一个问…

作者头像 李华
网站建设 2026/4/23 9:44:32

PyTorch自定义层开发:Miniconda环境下的编码实践

PyTorch自定义层开发&#xff1a;Miniconda环境下的编码实践 在深度学习项目中&#xff0c;我们常常遇到这样的场景&#xff1a;标准的 nn.Conv2d 或 nn.LSTM 已经无法满足模型设计的需求。比如你要实现一个带有位置感知的注意力机制&#xff0c;或者需要将物理规律嵌入神经网络…

作者头像 李华
网站建设 2026/4/23 9:44:08

利用Miniconda环境实现多用户共享GPU资源的隔离方案

利用Miniconda环境实现多用户共享GPU资源的隔离方案 在高校实验室、初创AI团队或企业内部平台中&#xff0c;一台配备多块A100或RTX 4090的GPU服务器常常需要服务十几甚至几十名研究人员。理想情况下&#xff0c;每个人都能独立运行PyTorch训练脚本、调试Jupyter Notebook&…

作者头像 李华
网站建设 2026/4/22 21:12:51

Miniconda-Python3.10镜像与主流大模型框架兼容性评测

Miniconda-Python3.10镜像与主流大模型框架兼容性评测 在AI研发日益工程化的今天&#xff0c;一个令人头疼的问题始终存在&#xff1a;为什么代码在本地能跑通&#xff0c;部署到服务器却报错&#xff1f;为什么复现一篇论文要花三天时间配置环境&#xff1f;这些问题的背后&a…

作者头像 李华
网站建设 2026/4/23 12:16:37

2025年度凌云奖揭晓,200万AI从业者共同定义“好产品”

在模型的喧嚣与沉淀之间&#xff0c;在智能的无限可能与落地应用之间&#xff0c;我们始终在追问&#xff1a;构成一个伟大AI产品的&#xff0c;究竟是什么&#xff1f;今天&#xff0c;一份由人类智慧与机器智能共同完成的“榜单”——2025年度凌云奖&#xff0c;正式发布。 从…

作者头像 李华