javascript:如何检查是否在上下文菜单的新选项卡上单击了链接

时间:2018-06-22 07:44:47

标签: javascript browser

是否可以检查是否单击了链接以在新窗口中打开? 我的意思是ctrl或Shift键按下是清楚的,您可以处理此事件,但是浏览器中的右键单击上下文菜单呢?在这里,您可以单击在另一个窗口中打开的上下文菜单项。

jquery context()方法在打开上下文菜单时触发:

$("a").contextmenu(function() {
  alert("context");
});

$("a").click(
    if (evnt.ctrlKey || evnt.shiftKey || evnt.metaKey || 
        (evnt.button && evnt.button == 1)){
        alert("link clicked");
    }
);

1 个答案:

答案 0 :(得分:1)

我想出了这个解决方案,虽然很hacky,但是可以自己动手做。

技巧是使用此jQuery插件创建自己的上下文菜单:

  

https://rawgit.com/swisnl/jQuery-contextMenu/master/dist/jquery.contextMenu.js   https://rawgit.com/swisnl/jQuery-contextMenu/master/dist/jquery.contextMenu.css   https://rawgit.com/swisnl/jQuery-contextMenu/master/dist/jquery.ui.position.js

这不会在SO上执行,我建议在JSFiddle上运行它:JSFiddle


$(function() {
  $.contextMenu({
    selector: '.context-menu-one',
    callback: function(key, options) {

      var m = "clicked: " + key;
      window.console && console.log(m);

      switch (key) {
        case "open_new_window":
          console.log($(this));
          //var win = window.open($(this)[0].href, '_blank');
          window.open($(this)[0].href,'_blank');
          //win.focus();
          break;
        case "cut":
          break;
      }
    },
    items: {
      "open_new_window": {
        name: "Open link in new tab",
        icon: "edit"
      },
      "cut": {
        name: "Cut",
        icon: "cut"
      }
    }
  });
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://rawgit.com/swisnl/jQuery-contextMenu/master/dist/jquery.ui.position.js"></script>
<link href="https://rawgit.com/swisnl/jQuery-contextMenu/master/dist/jquery.contextMenu.css" rel="stylesheet"/>
<script src="https://rawgit.com/swisnl/jQuery-contextMenu/master/dist/jquery.contextMenu.js"></script>


<a class="context-menu-one" href="https://www.google.com">Google</a><br>
<a class="context-menu-one" href="https://www.bing.com">Bing</a><br>
<a class="context-menu-one" href="https://www.yahoo.com">Yahoo</a><br>
<a class="context-menu-one" href="https://www.facebook.com">Facebook</a><br>