我在IE浏览器中遇到了一些客户端Javascript堆栈溢出问题,这是在第三方库中发生的,该第三方库进行了一些函数调用,并且由于某些原因,它们有时仅由于IE堆栈限制低而在IE中制动。
然后,我编写了一个小的测试HTML,以测试某些浏览器的堆栈大小限制,发现与运行Windows 7 OS,8Gb RAM的笔记本电脑上的FF 7或Chrome 14相比,IE8实际上具有较小的堆栈限制:
<html>
<body>
<!-- begin Script: -->
<script type="text/javascript">
function doSomething(){
var i = 3200;
doSomethingElse(i);
}
function doSomethingElse(i){
if (i == 0) return -1;
doSomethingElse(i-1);
}
doSomething();
</script>
<!-- END OF PAGE -->
</body>
</html>
当值大约为3200时,IE会引起堆栈溢出,与IE相比,Firefox和Chrome可以处理非常深的递归。
我想知道是否有一种方法可以将堆栈溢出异常与在IE或任何其他浏览器中在运行时引发它的Javascript函数联系起来,以及是否可以通过错误被提出。