7

我已阅读有关此主题的相关问题,但尚未找到此问题的解决方案。我有一个调用window.open点击一个链接时,一个简单的JavaScript函数:Javascript window.open在Win7 x64上的32位IE8中返回null

var newwindow; 
function pop(url) 
{ 
    newwindow=window.open(url,'','height=500,width=532'); 
    if (window.focus) {newwindow.focus();} 
} 

能正常工作在Chrome,火狐,甚至64位的IE 8的工作。然而,当我尝试这32位IE 8我得到一个错误,'newwindow'为空或不是对象

关于为什么这只会发生在32位IE 8的任何想法?

我的预感是它与Windows 7中的UAC有关(我正在运行Win 7 x64),但即使关闭了保护模式并使用兼容性视图运行,我也会收到错误。

我也想知道为什么Windows 7的64位带有两个IE 8的32位和64位版本,为什么32位版本被钉在任务栏我...

回答

2

我不知道你的其他问题,但32位版本默认情况下更明显的原因是大多数插件仍然没有64位版本,例如。 Flash,所以当用户无法使用他们的闪亮的新64位系统工作时,普通用户会感到非常困惑。

0

我注意到了类似的东西。

我有一个窗口打开使用IE功能showModalDialog。在这个窗口中,我有一个按钮,调用window.open。此通话返回null。然后我在普通窗口中打开相同的页面,而不是在模态对话框中。这一次按钮还返回null,但IE告诉我,网页要打开弹出窗口魔杖,这被阻止。它给了我一个解锁它的选择......它开始在两种情况下工作 - 模态和常规窗口。

看来,在IE的Modal模式下,IE不会显示像popup blocked这样的警告。

10

如果url位于当前域之外,Internet Explorer似乎会返回null。您可以通过先打开一个空白页面来解决该问题,然后将窗口导航到实际的网址:

var newwindow; 
function pop(url) 
{ 
    newwindow=window.open('','','height=500,width=532'); 
    newwindow.location = url; 

    if (window.focus) {newwindow.focus();} 
} 
+2

此项工作正常。然而,window.closed属性变成“真”,因为一旦你设置了位置url,新窗口就会刷新。 – noboundaries 2013-10-28 05:14:27

+1

该解决方案正在工作,但它正在创造另一个影响,因为它将'window.close'属性设置为true,这不是可行的解决方案。因为在我的应用程序中,我检查了'window.closed()',这使得条件成立,即使窗口没有关闭。 – 2016-06-07 07:24:58