IE 7 CTRL + click открывает новое окно - как его подавить?

StackOverflow https://stackoverflow.com/questions/2694408

  •  01-10-2019
  •  | 
  •  

Вопрос

Можно ли подавить функциональность IE 7 по умолчанию, когда CTRL+щелчок по ссылке открывает новое окно?если да, то каким образом?

Спасибо!

Это было полезно?

Решение

Нет способа подавить Ctrl + Нажмите на ссылку без детей в Internet Explorer - onclick Событие не стреляет вообще для ссылки, если Ctrl ключ удерживается. Похоже, что Microsoft не хочет, чтобы вы изменили эту функциональность из страха, что вы можете запутать пользователя.

Я искал какой-то официальный подтверждение / объяснение до публикации этого ответа, но, к сожалению, это ограничение не указано в документации на MSDN и Google не было полезно. Тем не менее, это остается правдой, попробуйте сами:

<a href="#" onclick="alert('Hello');">Hello</a>

Вы найдете, что Ctrl + Нажмите на ссылку не бросит предупреждающую коробку. Согласно с PinkGothic, присвоение дочернего элемента на ссылку будет работать по проблеме. Например:

<a href="#" onclick="alert('Hello');"><span>Hello</span></a>

Это работает, потому что щелчок срабатывает для <span> элемент сначала, прежде чем распространять <a> элемент.

Другие советы

Jquery. Event.PreventDefault () Метод или аналогичные могут переопределить поведение по умолчанию на страницах, которые у вас есть контроль.

Как правило, плохая практика является изменение поведения браузера пользователя без действительно веских причин, так как браузер и его поведение - «их».

у меня была та же проблема, что и у op, и я решил ее, присвоив атрибуту привязки href '#' и дополнительному атрибуту data-href с соответствующим расположением ссылки.Недостатком является то, что вам нужен обработчик кликов, чтобы перейти по ссылке, также щелчок правой кнопкой мыши "открыть в новом окне" не будет работать при таком подходе.

eg: In AnchorTag, Use href and data-ref as:
<a id="logout" href="#" data-href="${yourPath}"> 

And in javascript, use    
$("#logout").click(function(e) {
    if(e.ctrlKey) 
e.preventDefault();
window.location = $(e.target).attr("data-href");
});

Оберните текст ссылки внутри пролета. так:

<a href="test.html"><span>click here!</span></a>

Добавить скрипт на якорь и вернуть ложь

<a href='some.htm' onclick='return false;'></a>

И это действительно использовать анкеры в дереве, потому что он делает TreeView более доступным.

Использование jQuery Вы можете обрабатывать функциональность Ctrl + Click для себя и вернуть false, например

$("a").click(function(event){
if(event.metaKey || event.ctrlKey){
 //handle over here 

return false;
}

});

Это работает во всех браузерах, включая Mac

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top