使用.focus()时,FireFox弹出窗口阻止程序会破坏javascript应用程序

时间:2013-05-10 10:54:28

标签: javascript jquery firefox

我遇到了FireFox弹出窗口拦截器和这个javascript代码的问题。由于FireFox会阻止弹出窗口,因此语句.focus()会抛出错误,因为窗口未打开,因此之后的任何脚本都不会因此错误而运行。换句话说,如果FireFox弹出窗口阻止程序阻止在此代码中打开的窗口,而该窗口又会破坏应用程序,.focus()之后的任何代码都将无效。控制台错误为win is null

var win = window.open(url,window,options)
win.focus()
alert('hi');

在运行.focus()代码之前,我无法找到任何代码来检查窗口是否已打开,是否有人有任何建议?

2 个答案:

答案 0 :(得分:1)

var win = window.open(url,window,options)
if( win != null)
    win.focus();
alert('hi');

这应该有效。您必须检查是否已定义win。如果没有,请不要在其上调用任何方法。

答案 1 :(得分:1)

或者您可以使用:

var win = window.open(url,window,options)
try{
win.focus()
}
catch(ex){
  alert(ex.message);
}
alert('hi');