当前位置: 首页 > news >正文

JavaScript document.write()介绍(直接将内容写入HTML文档的早期方法,已逐渐被现代DOM操作方法取代)

文章目录

      • **一、基本语法**
      • **二、核心功能**
      • 1. **在文档加载阶段写入**
      • 2. **文档加载后调用会导致覆盖**
      • **三、注意事项**
        • 1. **覆盖风险**
        • 2. **性能问题**
        • 3. **XSS 漏洞**
        • 4. **已关闭的文档流**
      • **四、使用场景(不推荐,但需了解)**
      • **五、现代替代方案**
        • 1. **操作 DOM 元素**
        • 2. **创建新元素**
        • 3. **使用 `textContent` 防 XSS**
      • **总结**

document.write() 是 JavaScript 中一个直接将内容写入 HTML 文档的早期方法。以下是其详细介绍:


一、基本语法

document.write(content);
  • 参数content 可以是字符串、HTML 标签或变量,如 document.write("<h1>Hello</h1>")
    在这里插入图片描述

二、核心功能

1. 在文档加载阶段写入

当页面解析到 <script> 标签时,document.write() 会在当前位置插入内容:

<body>
  <script>
    document.write("<p>插入到 body 中的段落</p>");
  </script>
</body>

输出效果:内容直接显示在 <script> 标签所在位置。
在这里插入图片描述

2. 文档加载后调用会导致覆盖

若在页面加载完成后(如通过按钮点击触发),使用 document.write() 会清空整个页面:

 <!DOCTYPE html>
 <html>
 
 <head>
     <title>JavaScript练习</title>
 </head>
 
 <body>
     <h1>原始页面内容</h1>
     <button id="myButton">点击覆盖页面</button>
 
     <script>
         // 获取按钮元素
         const button = document.getElementById("myButton");
 
         // 绑定点击事件
         button.onclick = () => {
             document.write("页面已重置!"); // 点击后清空整个页面
         };
     </script>
 </body>
 
 </html>

在这里插入图片描述
在这里插入图片描述


三、注意事项

1. 覆盖风险

在异步代码或事件中调用时,内容会覆盖原有页面(触发 document.open())。

2. 性能问题

频繁使用会阻塞页面渲染,影响性能。

3. XSS 漏洞

直接插入未过滤的用户输入可能导致安全风险:

// 避免直接插入用户输入!
document.write(userInput); // 可能被注入恶意脚本
4. 已关闭的文档流

如果文档已关闭(如异步脚本中),调用会报错:

// 延迟执行时文档已关闭,导致错误
setTimeout(() => document.write("错误!"), 1000);

四、使用场景(不推荐,但需了解)

  • 快速测试:临时输出调试信息。
  • 旧代码维护:兼容遗留系统。
  • 动态脚本注入:某些广告脚本可能仍在使用。

五、现代替代方案

1. 操作 DOM 元素
// 插入内容到指定元素
document.getElementById("target").innerHTML = "<p>新内容</p>";
2. 创建新元素
const newElement = document.createElement("div");
newElement.textContent = "动态创建的内容";
document.body.appendChild(newElement);
3. 使用 textContent 防 XSS
// 安全插入纯文本
element.textContent = userInput;

总结

document.write() 因其覆盖风险和性能问题,已逐渐被现代 DOM 操作方法取代。建议优先使用 innerHTMLcreateElement 或框架(如 React/Vue)进行内容操作。

相关文章:

  • export关键字
  • boolen盲注和时间盲注
  • 链表(C语言版)
  • LeetCode541 反转字符串2
  • CAS单点登录(第7版)19.监控和统计
  • MongoDB索引介绍
  • 位图(C语言版)
  • 自己部署DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)
  • pdf文件的读取,基于深度学习的方法
  • 大模型WebUI:Gradio全解12——使用Agents和Tools智能代理工具构建UI(1)
  • vue3.x 的shallowReactive 与 shallowRef 详细解读
  • 深度学习之神经网络框架搭建及模型优化
  • 【C++终极篇】C++11:编程新纪元的神秘力量揭秘
  • 数据结构 04
  • 100.16 AI量化面试题:监督学习技术在量化金融中的应用方案
  • C#/.NET/.NET Core技术前沿周刊 | 第 24 期(2025年1.27-1.31)
  • SpringMVC父子容器:Web应用架构的隐形守护者
  • 回归新系列——网络安全实操干货系列——Kali Linux新版本——Kali Purple实操指南——信息收集篇1——Nmap(其一)
  • pptx文档提取信息
  • 20vue3实战-----使用echarts搭建各种图表
  • 国家统计局:4月全国规模以上工业增加值同比增长6.1%
  • 山东茌平民企巨头实控人省外再出手:斥资16亿拿下山西一宗探矿权
  • 穆迪下调美国主权信用评级
  • 竞彩湃|欧联杯决赛前,曼联、热刺继续划水?
  • 一图看懂|印巴交火后,双方基地受损多少?
  • 中国科学院院士、我国航天液体火箭技术专家朱森元逝世