IE 7 CTRL + щелчок открывает новое окно - как его подавить?
Можно ли подавить функциональность IE 7 по умолчанию, когда CTRL+ щелчок по ссылке открывает новое окно? если да, то как?
Спасибо!
6 ответов
Невозможно подавить нажатие Ctrl + клик по ссылке без дочерних элементов в Internet Explorer. onclick
событие не срабатывает при щелчках по ссылкам, если удерживать клавишу Ctrl. Похоже, что Microsoft не хочет, чтобы вы меняли эту функцию из страха, что вы можете запутать пользователя.
Я искал какое-то официальное подтверждение / объяснение, прежде чем опубликовать этот ответ, но, к сожалению, это ограничение не указано в документации по MSDN, и Google не помог. Тем не менее, это остается правдой, попробуйте сами
<a href="#" onclick="alert('Hello');">Hello</a>
Вы обнаружите, что нажатие Ctrl + по ссылке не выдает окно предупреждения. Согласно pinkgothic, назначение дочернего элемента для ссылки pinkgothic проблему. Например:
<a href="#" onclick="alert('Hello');"><span>Hello</span></a>
Это работает, потому что клик срабатывает для <span>
элемент, прежде чем распространяться на <a>
элемент.
Оберните текст вашей ссылки в промежуток. как это:
<a href="test.html"><span>click here!</span></a>
Имел ту же проблему, что и операция, и решил ее, задав атрибуту привязки 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");
});
Метод jQuery http://api.jquery.com/event.preventDefault/ или аналогичный может переопределить поведение по умолчанию на страницах, которые вы контролируете.
Обычно плохая практика - изменять поведение браузера пользователя без веской причины, так как браузер и его поведение "их".
Добавить скрипт на якорь и вернуть false
<a href='some.htm' onclick='return false;'></a>
И допустимо использовать якоря в древовидном представлении, потому что оно делает древовидное представление более доступным.
Используя jquery, вы можете самостоятельно обрабатывать функцию ctrl+click и возвращать false, например
$("a").click(function(event){
if(event.metaKey || event.ctrlKey){
//handle over here
return false;
}
});
это работает во всех браузерах, включая Mac