首页 > 解决方案 > 防止在 ctrl+click for location.href 时打开新选项卡

问题描述

我有一个带有以下代码的 Javascript 函数。

function NodeClickActions(sender, eventArgs) {
    event.preventDefault();
    //Get whether user clicked CTRL key or not
    var bCtrlPressed = eventArgs.get_browserEvent().ctrlKey;
    //URL of the actions page
    var URL = "../Actions.aspx";
   //If CTRL key was pressed
    if (bCtrlPressed) {
      parent.MainPage.location.href = URL + "?PackageId=00000000-0000-0000-0000-000000000000&All=" + bCtrlPressed;
        }
      else {
        parent.MainPage.location.href = URL;
      }
    }

我需要停止在新选项卡中打开页面。请注意,event.PreventDefault(); 不幸的是,不会成功。

我知道这是由于浏览器行为而不是代码造成的。欢迎任何建议。问候!

标签: javascripthref

解决方案


这是最简单的方法,防止点击 url 比阻止按下 CTRL/CMD 按钮更智能,因为 CTRL/CMD + CLICK 等功能是浏览器功能,不能被覆盖(或者至少我没有成功它)...

$(document).ready(function(){

    $("a").click(function(e){
        e.preventDefault();
        window.location.href = $(this).attr("href");
    });

});

取决于您将使用的情况,您需要为表单提交应用类似的东西......因为这也受到此浏览器功能的影响

重要提示:使用 Command + Click 的 OS X 用户,永远不要忘记

另外: 因为您想在绑定“单击”下禁用在新选项卡/窗口中打开功能,只需对 contextmenu 执行 preventDefaults (鼠标右键)

$("a").contextmenu(function(e){
    e.preventDefault();
});

推荐阅读