命令运行得太早时,JavaScript打开新窗口而不是tab

时间:2012-04-17 05:52:55

标签: javascript jquery

我意识到您无法控制浏览器是否打开新的窗口而不是新的标签,因此这可能没有解决方案。

问题基本上就是我运行的东西:

function runCommand() {
   //...
   window.open(url);
}

如果用户按下特殊键或单击,则会不时运行。一切正常,它将根据用户的浏览器设置打开一个新窗口或选项卡。大。

问题是,我也有一些代码:

if (x.property) runCommand();

这将始终在新的窗口中打开网址,即使您在同一页面上的其他时间使用runCommand,它也会如果这是用户的设置,请使用标签。

起初,我认为它可能与页面未完全加载有关,所以我都尝试将其包装在document.ready中并使用setTimeout()包含一些高数字(例如5秒)。即使这样做,runCommand() 仍会在初始运行时打开一个新窗口,即使它稍后会打开一个新选项卡。有没有人经历过这种行为或者知道如何解决这个问题?

编辑:我创建了一个展示问题的小提琴。请原谅弹出窗口:http://jsfiddle.net/csPGU/

2 个答案:

答案 0 :(得分:1)

如果从事件处理程序执行window.open,例如单击,它将在新选项卡中打开,否则将在新窗口中打开。

答案 1 :(得分:1)

我猜测它与浏览器本身以及浏览器尝试处理以编程方式打开的窗口的方式有关。

我假设当你runCommand之后它基于已发生的事件(例如点击某事)。浏览器通常允许由事件触发的新窗口,但阻止那些没有交互的窗口(通常是弹出窗口)。