我意识到您无法控制浏览器是否打开新窗口与新选项卡,因此这可能没有解决方案。
问题基本上是我运行类似:
function runCommand() {
//...
window.open(url);
}
如果用户按下特殊键或单击,这会不时运行。一切正常,它将根据用户的浏览器设置打开一个新窗口或选项卡。伟大的。
问题是,我还有一些代码:
if (x.property) runCommand();
这将始终在新窗口中打开 url ,即使您runCommand
在同一页面上的其他时间使用,如果这是用户的设置,它将使用选项卡。
起初,我认为这可能与页面未完全加载有关,因此我都尝试将其包装起来document.ready
并使用setTimeout()
了一些较高的数字(例如 5 秒)。即使在这样做之后,即使稍后runCommand()
会打开一个新选项卡,它仍然会在初始运行时打开一个新窗口。有没有人经历过这种行为或知道如何解决它?
编辑:我创建了一个展示问题的小提琴。请原谅弹出窗口:http: //jsfiddle.net/csPGU/