about:blank 是浏览器内置的空文档协议,加载后提供干净同源的 document 对象,不触发跨域限制或网络请求,是动态注入 html 的安全起点;需等待 iframe 的 load 事件后再通过 doc.write() 或 innerhtml 写入内容,否则易获 null 或 securityerror。
iframe src="about:blank" 是什么,为什么能写入内容
about:blank 是浏览器内置的空文档协议,加载后 iframe 会拥有一个干净、同源的 document 对象(注意:仅当 iframe 没有设置 sandbox 属性或 sandbox 不含 allow-scripts 时才可执行脚本)。它不触发跨域限制,也不发网络请求,是动态注入 HTML 内容最安全的起点之一。
关键点在于:只有 iframe 已完成初始加载(即 load 事件触发后),它的 contentDocument 或 contentWindow.document 才可用。过早访问会返回 null 或抛出 SecurityError(尤其在某些嵌套或 sandbox 场景下)。
如何用 JavaScript 安全写入内容到 about:blank iframe
必须等 iframe 加载就绪再操作。推荐监听 load 事件,而非轮询或延时。写入方式分两种:
- 直接调用
document.write()(需在contentDocument上执行,且只能在文档打开状态下用;多次调用会清空前一次) - 使用
document.documentElement.innerHTML = ...或document.body.innerHTML = ...(更可控,支持后续更新)
示例:
<iframe id="myFrame" src="about:blank"></iframe>
<script>
const iframe = document.getElementById('myFrame');
iframe.addEventListener('load', () => {
const doc = iframe.contentDocument || iframe.contentWindow.document;
// ✅ 安全写入
doc.open();
doc.write('<html><body><h2>Hello from JS</script>前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











