Javascript window.open在Win7 x64上的32位IE8中返回null

时间:2009-12-01 17:15:08

标签: javascript internet-explorer windows-7 internet-explorer-8

我已阅读有关此主题的相关问题,但尚未找到解决此问题的方法。我有一个简单的javascript函数,在单击链接时调用window.open:

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

这适用于Chrome,Firefox,甚至可以在64位IE 8中运行。但是,当我在32位IE 8中尝试此操作时,我收到错误'newwindow'为null或不是对象

为什么会出现这种情况只能在32位IE 8中出现?

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

我也想知道为什么Windows 7 x64同时包含32位和64位版本的IE 8,以及为什么32位版本固定在我的任务栏上......

3 个答案:

答案 0 :(得分:10)

如果网址在当前域之外,则Internet Explorer似乎返回null。您可以先打开一个空白页,然后将窗口导航到实际的URL:

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

我注意到了类似的东西。

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

似乎在IE中的模态模式下,IE不会显示popup blocked之类的警告。