Javascript 在IE中打开弹出窗口;“未找到成员”;

Javascript 在IE中打开弹出窗口;“未找到成员”;,javascript,internet-explorer,pdf,popup,Javascript,Internet Explorer,Pdf,Popup,在IE6中,当用户打开一个弹出窗口,打开里面的PDF文件时,就会发生这种情况。(本部分有效) 然后,用户打开另一个弹出窗口,此时我得到这个错误 有一个 我的问题是: 有更好的解决办法吗?打开窗口并立即关闭对我来说似乎是一个愚蠢的解决方案。我使用try-catch块解决了这个问题 windowHandle = window.open('',name,attributes); try { windowHandle.document.location.href = url; } catch (

在IE6中,当用户打开一个弹出窗口,打开里面的PDF文件时,就会发生这种情况。(本部分有效)

然后,用户打开另一个弹出窗口,此时我得到这个错误

有一个

我的问题是:


有更好的解决办法吗?打开窗口并立即关闭对我来说似乎是一个愚蠢的解决方案。

我使用try-catch块解决了这个问题

windowHandle = window.open('',name,attributes);
try {
    windowHandle.document.location.href = url;
} catch (exc) {
    windowHandle.close();
    windowHandle = window.open('',name,attributes);
    windowHandle.document.location.href = url + suffix;
}
windowHandle.focus();

似乎对我有用。

我想我有一个更好的解决方案,不需要先关上窗户。问题是,如果您试图用空URL(即“”)再次打开某个窗口(PDF或其他),IE将不会覆盖该窗口。但是,它将用非空URL覆盖PDF。这可能是一个文件,但关于:blank工作得更好(这是一个空URL通常所做的)

根据代码的编写方式,您可能仍然需要try/catch,但这将消除以下需要:

windowHandle = window.open('about:blank',name,attributes);
windowHandle.document.location.href = url;
windowHandle.focus();
关于:blank将强制PDF退出子窗口,并允许您执行需要执行的操作。将URL和focus()的设置放在windowHandle.onload()处理程序中可能不是一个坏主意,这样处理PDF时就不会出现任何时间问题。即:

windowHandle.onload=function(){
    windowHandle.document.location.href = url;
    windowHandle.focus();
};

有趣的是,下次出现这种情况时,我会尝试你的解决方案