我已阅读有关此主题的相关问题,但尚未找到解决此问题的方法。我有一个简单的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位版本固定在我的任务栏上......
答案 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
之类的警告。