IE 7 CTRL + щелчок открывает новое окно - как его подавить? - PullRequest
3 голосов
/ 23 апреля 2010

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

Спасибо!

Ответы [ 6 ]

7 голосов
/ 23 апреля 2010

Нет способа подавить 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>.

1 голос
/ 04 февраля 2014

обернуть текст вашей ссылки в промежуток. как это:

<a href="test.html"><span>click here!</span></a>
1 голос
/ 21 октября 2011

имел ту же проблему, что и операция, и решил ее, задав атрибуту привязки 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");
});
1 голос
/ 23 апреля 2010

Метод jQuery event.preventDefault () или аналогичный может переопределить поведение по умолчанию на страницах, которые вы контролируете.

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

0 голосов
/ 16 мая 2011

Используя jquery, вы можете самостоятельно обрабатывать функцию ctrl + click и возвращать false, например,

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

return false;
}

});

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

0 голосов
/ 23 апреля 2010

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

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

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

...