jQuery:检测鼠标单击并在新选项卡中打开目标

时间:2011-09-26 11:39:24

标签: jquery

我目前正在设计一个简单的论坛应用程序。它主要由jQuery / AJAX提供支持,并在同一页面上加载所有内容;但是,我知道有时用户想要在浏览论坛时一次打开几个主题以在新标签中查看它们。

我的解决方案是检测单击鼠标中键并单击鼠标左键,然后执行不同的操作。我想在单击鼠标左键时在窗口中加载AJAX目标,否则将其加载到新选项卡中。

我唯一的问题是我不知道用jQuery在新选项卡中打开目标位置的方法。显然不允许随意打开新选项卡,但是有没有办法将这种类型的行为分配给用户生成的操作?

谢谢!

6 个答案:

答案 0 :(得分:16)

请查看示例代码。这可能会有所帮助

<script type='text/javascript'>
    jQuery(function($){
        $('a').mousedown(function(event) {
            switch (event.which) {
                case 1:
                    //alert('Left mouse button pressed');
                    $(this).attr('target','_self');
                    break;
                case 2:
                    //alert('Middle mouse button pressed');
                    $(this).attr('target','_blank');
                    break;
                case 3:
                    //alert('Right mouse button pressed');
                    $(this).attr('target','_blank');
                    break;
                default:
                    //alert('You have a strange mouse');
                    $(this).attr('target','_self"');
            }
        });
    });
</script>

答案 1 :(得分:9)

<a href="some url" target="_newtab">content of the anchor</a>

在javascript中你可以使用

$('#element').mousedown(function(event) {
      if(event.which == 3) { // right click
          window.open('page.html','_newtab');
      }
})

答案 2 :(得分:5)

你还需要考虑使用ctrl-click和cmd-click来打开新标签(分别在windows / linux和mac中。因此,这将是一个更完整的解决方案:

jQuery.isClickEventRequestingNewTab = function(clickEvent) {
    return clickEvent.metaKey || clickEvent.ctrlKey || clickEvent.which === 2;
};

答案 3 :(得分:1)

    $('#element').mousedown(function(event) {
          if(event.which == 3) { // right click
              window.open("newlocation.html","");
          }
    });

直播http://jsfiddle.net/8CHTm/1/

答案 4 :(得分:0)

鼠标中键的默认操作是在新标签页中打开。

您可以将超链接目标属性设置为_blank以打开新选项卡。

<a href="#link" target="_blank">Link</a>

您还可以参考此问题How to distinguish between left and right mouse click with jQuery

答案 5 :(得分:-1)

请尝试&#34; _newTab&#34;而不是&#34; _blank&#34;

window.open(URL,&#34; _newtab&#34;);