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

时间:2019-05-06 14:00:35

标签: javascript html bookmarklet

我在JavaScript代码中经历了一些while循环,并对为什么导致循环从网站上删除所有代码(单个标头除外)感到好奇。我认为这是因为循环是无限的(因为1始终等于1),但对于为什么不仅仅使网站崩溃而感到好奇。是否由于未将document.write指定给某个路径?

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

编辑:感谢您的帮助,看来document.open已运行,并导致页面代码被删除。然后浏览器认为这是由于实际网站的代码所致,Chrome浏览器发出了一条错误消息。

1 个答案:

答案 0 :(得分:5)

document.write()是DOM阻止功能,这意味着浏览器会中断解析。因此,在调用您的函数时,浏览器将永远停留在其上,并且无法继续正确呈现网站。

另一个效果如下:

  

as document.write写入文档流,调用   在关闭(已加载)文档上的document.write自动调用   document.open,这将清除文档。

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

两者都取决于时间安排,并且可能涉及比赛条件。

请阅读此问答以获取有关SO的更多信息:

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