Запретить открытие новой вкладки, когда Ctrl + клик для location.href - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть функция 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 ();к сожалению, не поможет.

Я понимаю, что это связано с поведением браузера, а не с кодом.Любое предложение приветствуется.Привет! * * 1006

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Вот самый простой способ для этого: предотвращение щелчка по URL-адресу намного разумнее, чем предотвращение нажатия кнопок CTRL / CMD, поскольку такие функции, как CTRL / CMD + CLICK, являются функциями браузера и не могут быть перезаписаны (или, по крайней мере, я этого не сделал).добиваться успеха в этом) ...

$(document).ready(function(){

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

});

зависит от того, в каком случае вы будете использовать, вам нужно применить нечто подобное для отправки формы ... потому что это также зависит от этой функции браузера

Важно: Пользователи OS X, использующие Command + Click, никогда не забывайте, что

Добавление: Поскольку вы хотите отключить функцию открытия в новой вкладке / окне при привязке, щелкнитеmsgstr "просто сделать дефолт по умолчанию для контекстного меню (правая кнопка мыши)

$("a").contextmenu(function(e){
    e.preventDefault();
});
0 голосов
/ 25 февраля 2019

Вам необходимо добавить прослушиватель непосредственно в тег привязки, а не использовать делегирование события и добавление в родительский элемент.Рабочий пример здесь .

HTML

   <a href="https://gmail.com">Click Me</a>

JS:

$(document).ready(function ()
   {
      $("a").on('click',function(event)
      {debugger;
         event = event || window.event;
         event.preventDefault(); 
         event.stopPropagation();
        return false;
      });

});
0 голосов
/ 25 февраля 2019

Обнаружить клавишу нажатия Ctrl или нет. Используйте Jquery Для обработки событий легко

var ctrl=false;
$(document).on('keydown',function(e){
    console.log(e.ctrlKey)
}).on('click','a[href]',function(e){
   if(!ctrl){
     e.preventDefault();
   }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="this?one">one</a>
...