document.write()究竟是如何工作的?
当我这样做时
document.write('<script src="file.js"><\/script>');
在 head 标记内的脚本标记内,document.write()会在 head 标记内插入标记。 (因为我是从 head 标签中调用它)
在页面完全加载后调用document.write时,它会隐式调用document.open()然后执行document.write()
我的问题是, 页面加载后,当我调用
document.write('hello'); //Inserts 'hello' within body tag
当我打电话
document.write('<script src="file.js"><\/script>'); //Inserts within head tag
那么document.write()究竟是如何知道我插入了什么类型的字符串?它也会解析字符串吗?
答案 0 :(得分:4)
浏览器将document.write
插入的所有数据视为来自服务器,就在包含write
的脚本块之后。因此,如果您document.write('<script>alert(1);</' + 'script>');
,浏览器将在当前版本之后添加另一个<script>
元素。脚本块无论在何处,在头部或文档正文中都可以执行。
如果在加载页面后调用document.write
,则会创建一个新文档。
您的第三个代码段将创建一个仅包含<script>
标记的HTML文档。这不是有效的HTML,因此大多数浏览器会为您神奇地创建<html>
和<head>
元素,并将脚本元素放在那里。