javascript 如何禁用打开新的浏览器标签Ctrl +单击

rqcrx0a6  于 2023-06-04  发布在  Java
关注(0)|答案(2)|浏览(176)

你好。我有一些产品的清单。我实现了多个选择产品使用Ctrl键。

$(parentSelector).on("click", function (evnt) {
                    evnt.stopImmediatePropagation();
                    var item = $(evnt.delegateTarget)
                    // TODO: clarify how to rewrite event handling
                    if (!evnt.ctrlKey && !evnt.metaKey) {
                        var selectedItems = $("#tabs .popup-body").find("a.item.selected");
                        $.each(selectedItems, function () {
                            $(this).removeClass("selected");
                        });
                    } else {
                        if (item.hasClass("selected")) {
                            item.removeClass("selected")
                        } else {
                            item.addClass("selected")
                        }
                        return false;
                    }
                });

在“else”中,块产品变为选定或未选定。但是当标签页没有完全加载时,Ctrl+单击打开新标签页,如何防止它?谢谢你。

a7qyws3x

a7qyws3x1#

也许你需要这个

element.onclick = function(event) {
      event.preventDefault();
      //do stuff
    };

演示:http://jsbin.com/okoRorU/

h79rfbju

h79rfbju2#

HTML:

<a href="https://example.com" class="disable-ctrl-click">Users cannot open this link in new tab by Ctrl+click</a>

JavaScript(vanilla):

document.addEventListener('DOMContentLoaded', function() {
  var links = document.getElementsByClassName('disable-ctrl-click');

  Array.prototype.forEach.call(links, function(link) {
    link.addEventListener('click', function(event) {
      if (event.ctrlKey || event.metaKey) {
        event.preventDefault();
      }
    });
  });
});

JavaScript(使用jQuery):

$(document).ready(function() {
  $('.disable-ctrl-click').click(function(event) {
    if (event.ctrlKey || event.metaKey) {
      event.preventDefault();
    }
  });
});

相关问题