我正在尝试获取一个链接,该链接将在当前页面中打开,或者在基于用户设置的新选项卡/窗口中打开命令/ ctrl(等)。现在我正在使用这样的东西:
<a href='http://example.com' onclick="setTimeout(function() {window.location='/some_local_page'}, 10); return false;">Foo!</a>
这允许我点击链接并让它打开本地页面,但是我必须右键单击并在新标签/窗口中选择打开。我很确定这是一个已解决的问题,但我找不到google / stackoverflow关键字的正确组合。 :)
这可能有助于澄清:
<a href='http://example.com' onclick="some_javascript_function(); return false;">Foo!</a>
在这种情况下,点击应调用some_javascript_function(),并且命令/ ctrl单击应在新标签/窗口中打开“http://example.com”,并且不对当前页面执行任何操作。
答案 0 :(得分:7)
这是你想要的吗?
<a href="http://example.com" onclick="window.open('/some_local_page')">Foo!</a>
还是这个?
<a href="/some_local_page" target="_blank">Foo!</a>
编辑:单击中心或左键(但不是右键)时会激活onclick
。
因此,在onclick
中,你需要检测是否按下了ctrl,或者它是否是中间按钮。
我还建议不要将JavaScript内联。试试这个:
<a href="http://example.com" class="link" data-link="/some_local_page">Foo!</a>
$('a.link').click(function(e){
if(e.button === 0 && !e.ctrlKey){ // Click without ctrl
e.preventDefault();
// open local page
window.location = $(this).data('link');
}
// Middle click and ctrl click will do nothing,
// thus allowing the brower to open in a new window
});
答案 1 :(得分:1)
如果要转到相同的网址,为什么不在其href属性中呈现相同的网址?要在新窗口中打开它,请将目标设置为_blank
。
<a href='/some_local_page' target='_blank'>Foo!</a>