为什么我会“无法从释放的脚本中执行代码”

时间:2013-04-05 09:33:00

标签: javascript

首先:是的,我读过this answer ...而且,是的,脚本之后没有元数据(因为我的页面上没有任何元数据),而且,不,没有超时或者ajax-request

我有以下辅助方法(是的,我本可以制作原型方法......):

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
    });
});

我收到异常“SCRIPT5011:无法从释放的脚本中执行代码”(仅在IE渲染模式&lt; 10中)以下行:

array.splice(index, 1);

但不是第一次调用,而是在任何后续调用(对于相同的数组)......

但是我想不出这个异常发生的原因,因为我在callstack中访问其他行中的数组(正如你所看到的,例如getIndexOfElement,我迭代数组)。 / p>

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

This question包含关于iframes关系的好答案。 (作为OP建议的答案添加)。