如何在尊重 Ctrl 单击在新选项卡中打开 URL 的同时导航到 URL?

How to navigate to a URL while respecting Ctrl-click opens URL in new tab?

提问人:Andy 提问时间:5/31/2012 最后编辑:Brian Tompsett - 汤莱恩Andy 更新时间:9/12/2020 访问量:2388

问:

我希望能够(从 Javascript 中)导航,就好像链接被点击了一样(但不一定是点击链接时——可能是另一个操作)。

我知道 和 ,但这些方法不允许用户通过按住 (OS X) 或 .我希望能够在不手动检查这些键的状态的情况下做到这一点。window.location.href = '...';window.location.replace('...');CmdCtrl

javascript dom-events unobtrusive-javascript

评论


答:

4赞 Cesar Varela 10/5/2012 #1

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

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

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

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

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

评论

0赞 Andy 10/12/2012
这并不理想,但我会接受的。
6赞 Joël 9/5/2013 #2

如果您想处理两次点击,正常和 ctrl 单击这就是我使用的:

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

评论

1赞 Andy 2/27/2016
有什么方法可以不在前台打开它?