我有一個(生成的)頁面,上面有一個非常大的鋸齒狀數組。它不會在IE11中初始化;我得到SCRIPT28: Out of stack space
和SCRIPT2343: Stack overflow at line: 1
。我有問題的頁面已經減少到最低限度,用隨機的數據,這是它的樣子:在Internet Explorer 11中加載巨大的數組會導致堆棧溢出
<html><body>
<div id="info">
Loading...
</div>
<script>
var d = [];
var i = 0;
d[i++] = [
"XHC_14",
0
];
d[i++] = [
"ZXS_26",
"UVT_27",
"QML_3149",
"MJO_3150",
15993327
];
d[i++] = [
"VKG_3156",
"ZEA_3157",
"KZG_3159",
"MNA_3162",
"AKX_3163",
"KLK_3164",
618601
];
// more array initialization ...
info.innerHTML = "<h1>Ready!</h1>"; // this will only show if the initialization succeeded
</script>
</body></html>
真正的文件〜500K線,圍繞重複數組初始化〜14K倍。真正的文件在這裏可用:ie11_stack_overflow_problem.zip
它只會在陣列初始化足夠大時崩潰。我有各種各樣的變異,包括把它放在一個函數裏面,使它變成它自己的範圍,但無濟於事。它適用於我測試的所有其他瀏覽器,包括XP上的IE8。我的配置是Win7的IE 11.0.9600.17107(完全更新)。
任何人都可以找出爲什麼會發生這種情況嗎?
我不認爲這是一個運行時問題。我認爲你已經在編譯器/解釋器中遇到了一些限制。這是一個非常笨重的源文件。我可能會考慮外部化這些數據並嘗試通過XMLHttpRequest加載它。 – spender
我不能,因爲文件的要點是自包含的(它是由[工具](http://www.rlvision.com/snap2html/)生成的基於html的文件列表) –
我應該添加這:鋸齒陣列似乎是問題的一部分。如果你只是選擇一個dir [i ++]並乘以相同的大小,它就不會發生。 –