是什么导致 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"?
我 运行 在我的 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"?