2013-04-05 38 views
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遍歷數組)。

有人可以幫我嗎?

+2

你能在小提琴中重現嗎? – 2013-04-05 09:34:43

+0

@dystroy好點!會盡力! – 2013-04-05 09:37:53

+0

你確定你的代碼沒有改變拼接功能嗎?數組是一個真正的數組還是一個類似數組的對象? – 2013-04-05 09:38:29

回答

2

This question包含關於iframes關係的一個很好的答案。 (作爲OP建議的回答添加)。

相關問題