Javascript链接能够在新标签/窗口中打开

时间:2012-02-29 19:18:55

标签: javascript jquery html

我正在尝试获取一个链接,该链接将在当前页面中打开,或者在基于用户设置的新选项卡/窗口中打开命令/ 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”,并且不对当前页面执行任何操作。

2 个答案:

答案 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
});​

DEMO:http://jsfiddle.net/E8hEt/

答案 1 :(得分:1)

如果要转到相同的网址,为什么不在其href属性中呈现相同的网址?要在新窗口中打开它,请将目标设置为_blank

<a href='/some_local_page' target='_blank'>Foo!</a>