为什么我得到“Can't execute code from a free script”?

Why do I get "Can't execute code from a freed script"

本文关键字:from code execute free script Can 为什么      更新时间:2023-09-26

首先:是的,我看过这个答案…并且,是的,脚本后没有元(因为我的页面上没有任何元),并且,不,没有超时或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渲染模式<10)在以下行:

array.splice(index, 1);

但不是在第一次调用时,而是在任何后续调用时(对于同一个数组)…

但是我想不出这个异常发生的单一原因,因为我在调用堆栈中访问其他行中的数组(如您所见,例如getIndexOfElement,我在数组上迭代)。

有人能帮我一下吗?

这个问题包含了关于iframe关系的很好的答案。