IE9、jQuery 1.6.1和.load()

3

可能是重复问题:
jQuery .load方法在IE9上无法触发

在IE7和IE8中,此代码可以工作。但是在IE9中,我无法使.load()函数在窗口句柄上工作。

var windowHandle = window.open(url, token, "height=150, width=400,alwaysRaised=yes", false);

$(windowHandle).load(function () {
    alert('This is not getting executed in IE9');
});

编辑:可行的解决方案(有点儿像黑客)

window.setTimeout(function () {
    if (windowHandle && windowHandle.document && windowHandle.document.readyState && windowHandle.document.readyState == "complete") {
        windowHandle_Load();
    } else {
        $(windowHandle).load(windowHandle_Load);
    } 
}, 1000);
1个回答

1
我怀疑当您的 URL 在浏览器缓存中时,在安装 .load() 处理程序之前就已经完成加载。为了尝试检测这种情况,您可以尝试以下操作:

if (windowHandle.document.readyState == "complete") {
    // already loaded
    alert('This is not getting executed in IE9');
} else {
    // not yet loaded
    $(windowHandle).load(function () {
        alert('This is not getting executed in IE9');
    });
}

document.readyState 属性在大多数浏览器中已经存在了一段时间,只是在 Firefox 3.6 中才添加了它。

可以将要执行的代码拆分成一个通用函数,然后在这两个位置调用该函数,而不是复制两份相同的代码。


代码已经在执行,但我不得不将你的代码包装在1000毫秒的setTimeout中...或者在它之前加上一个警告。 - CaffGeek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接