是什么导致 While (1) 循环删除网站代码?

What causes the While (1) loop to remove a website's code?

我 运行 在我的 JavaScript 代码中经历了一些 while 循环,并且很好奇是什么导致循环从网站上删除了所有代码(除了一个 header).我想这是因为循环是无限的(因为 1 总是等于 1),但很好奇为什么它不只是让网站崩溃。是因为 document.write 没有指定到某个路径吗?

javascript: (function() { while (1) {  document.write('Y'); }})();

编辑:感谢您的帮助,似乎 document.open 是 运行 并导致页面代码被删除。然后浏览器认为这是由于实际网站的代码造成的,并且 Chrome 显示了一条错误消息。

document.write()是一个DOM阻塞函数,也就是说,浏览器中断解析。因此,当您的函数被调用时,浏览器会永远卡在上面,无法继续正确呈现网站。

另一种效果如下:

as document.write writes to the document stream, calling document.write on a closed (loaded) document automatically calls document.open, which will clear the document.

https://developer.mozilla.org/en-US/docs/Web/API/Document/write

两者都取决于时间并可能涉及竞争条件。

请阅读此 Q/A 以获取有关 SO 的更多信息:

Why is document.write considered a "bad practice"?