3
首先:是的,我讀過this answer ......並且,是的,腳本之後沒有meta(因爲我沒有任何meta我的網頁),以及,沒有,沒有超時或AJAX請求爲什麼我會得到「無法從釋放的腳本執行代碼」
我有以下的輔助性方法(是的,我可以做出一個原型法...):
function removeElementFromArray(array, compareMethod) {
if (!array) {
return;
}
if (!$.isFunction(compareMethod)) {
return;
}
var index = getIndexOfElement(array, compareMethod);
if (index < 0) {
return;
}
array.splice(index, 1);
}
function getIndexOfElement(array, compareMethod) {
if (!array) {
return -1;
}
if (!$.isFunction(compareMethod)) {
return -1;
}
for (var i = 0; i < array.length; i++) {
var element = array[i];
if (compareMethod(element)) {
return i;
}
}
return -1;
}
我打電話給:
$foo.on('click', function() {
removeElementFromArray(window.myArray, function (element) {
return // some condition
});
});
我得到e xception「SCRIPT5011:不能從已釋放腳本執行代碼」(只在IE渲染模式< 10)在下面一行:
array.splice(index, 1);
但不是在第一次通話,但在任何後續的那些(對相同的陣列)...
但我想不出爲什麼會發生這種異常,因爲我在調用堆棧中訪問其他行中的數組(如您所見,例如getIndexOfElement,其中I遍歷數組)。
有人可以幫我嗎?
你能在小提琴中重現嗎? – 2013-04-05 09:34:43
@dystroy好點!會盡力! – 2013-04-05 09:37:53
你確定你的代碼沒有改變拼接功能嗎?數組是一個真正的數組還是一個類似數組的對象? – 2013-04-05 09:38:29