我希望能够(从 Javascript)导航,就好像单击了链接一样(但不一定在单击链接时 - 可能是另一个动作)。
我知道window.location.href = '...';
and window.location.replace('...');
,但是这些方法不允许用户通过按住Cmd(OS X) 或. 来指定新窗口、新选项卡等Ctrl。我希望能够在不手动检查这些键的状态的情况下做到这一点。
我希望能够(从 Javascript)导航,就好像单击了链接一样(但不一定在单击链接时 - 可能是另一个动作)。
我知道window.location.href = '...';
and window.location.replace('...');
,但是这些方法不允许用户通过按住Cmd(OS X) 或. 来指定新窗口、新选项卡等Ctrl。我希望能够在不手动检查这些键的状态的情况下做到这一点。
如果你想同时处理点击,正常和 ctrl-click 这就是我使用的:
$("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;
});
这仅在您从用户触发的单击处理程序中执行时才有效,否则,浏览器会将其检测为不需要的弹出窗口并阻止它:
<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();
}
我认为没有其他选择,因为这是一种安全行为。