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

FireFox弹出窗口阻止程序在使用.focus()时破坏javascript应用程序,javascript,jquery,firefox,Javascript,Jquery,Firefox,我对FireFox弹出窗口拦截器和此javascript代码有问题。由于FireFox会阻止弹出窗口,因此语句.focus()会抛出一个错误,因为窗口未打开,因此之后的任何脚本都不会因为此错误而运行。换句话说,如果FireFox弹出窗口拦截器阻止在此代码中打开的窗口,从而破坏应用程序,则.focus()之后的任何代码都将不起作用。控制台显示错误,因为win为null var win = window.open(url,window,options) win.focus() alert('hi')

我对FireFox弹出窗口拦截器和此javascript代码有问题。由于FireFox会阻止弹出窗口,因此语句
.focus()
会抛出一个错误,因为窗口未打开,因此之后的任何脚本都不会因为此错误而运行。换句话说,如果FireFox弹出窗口拦截器阻止在此代码中打开的窗口,从而破坏应用程序,则
.focus()
之后的任何代码都将不起作用。控制台显示错误,因为
win为null

var win = window.open(url,window,options)
win.focus()
alert('hi');
在运行
.focus()
代码之前,我找不到任何代码来检查窗口是否打开,有人有什么建议吗

var win = window.open(url,window,options)
if( win != null)
    win.focus();
alert('hi');
这应该行得通。您必须检查是否定义了
win
。如果没有,请不要对其调用任何方法。

或者您可以使用:

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