如何在按住Ctrl键的同时导航到URL,在新选项卡中打开URL?

时间:2012-05-30 21:32:23

标签: javascript javascript-events unobtrusive-javascript

我希望能够(来自Javascript)导航,就像点击链接一样(但不一定是点击链接时 - 可能是另一个动作)。

我知道window.location.href = '...';window.location.replace('...');,但这些方法不允许用户通过按住Cmd(OS X)或Ctrl来指定新窗口,新选项卡等。我希望能够在不手动检查这些键的状态的情况下完成它。

2 个答案:

答案 0 :(得分:5)

如果你想同时处理两次点击,普通和按住Ctrl键点击这就是我使用的:

$("li").on("click", function(e){
    var url = $(this).find("a").attr("href");
    if(e.ctrlKey){
        $('<a href="'+ url + '" target="_blank"></a>')[0].click();
    } else {
        document.location = url;
    }
    return false;
});

答案 1 :(得分:4)

仅当您从用户触发的点击处理程序执行此操作时才有效,否则,浏览器会将其检测为不需要的弹出窗口并阻止它:

<div id="test">open in new tab</div>

$('#test').click(function(){    
    openInNewTab('http://example.com');
});

function openInNewTab(url)
{
    $('<a href="'+ url + '" target="_blank">open in new tab</a>')[0].click();
}

我认为没有其他选择,因为这是一种安全行为。