当.focus返回null时,IE7 window.open

时间:2010-10-13 11:55:48

标签: javascript internet-explorer-7

我正在尝试做这样的事情

win = null;
win = window.open('/url/to/link','tab');
win.focus();

但是在IE7中它返回我的win.focus()行;胜利的错误是空的。

我该如何解决?

提前致谢!

3 个答案:

答案 0 :(得分:2)

Blockquote< 返回值

返回对新窗口对象的引用。使用此引用可访问新窗口中的属性和方法。

Windows Vista上的Internet Explorer 7:从应用程序(Internet Explorer进程除外)打开新窗口可能会导致返回值为null。出现此限制是因为Internet Explorer默认以受保护模式运行。受保护模式的一个方面是防止应用程序在访问跨越进程边界时具有对Internet Explorer的特权访问权限。使用此方法打开一个新窗口会生成一个新进程。有关受保护模式的详细信息,请参阅了解和在受保护模式下工作Internet Explorer。这通常发生在承载WebBrowser控件的应用程序中。> Window.Open method documentation

  

答案 1 :(得分:2)

您可以尝试添加一点延迟以确保窗口打开

//win = null;  <--useless
win = window.open('/url/to/link','tab');
if(win)window.focus();
else{
    var timer = window.setTimeout( function(){ if(win)win.focus(); }, 100 );
}

这一天,大多数人都避免弹出窗口并使用模态图层。

答案 2 :(得分:0)

启动弹出窗口时,请为其指定变量名称:

myWin = window.open(etc)

//in the child window, call window.opener.myFocusFunction()
//in the parent window, use this...

function myFocusFunction(){
   myWin.focus();
   //myWin.blur();
   //uncomment as needed!
}

玩一玩,它对我有用。