2013-04-05 77 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建议的回答添加)。

相关问题