Можно ли подавить функциональность IE 7 по умолчанию, когда CTRL+щелчок по ссылке открывает новое окно? если да, то как?
Спасибо!
Можно ли подавить функциональность 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>
.
<a href="http://stackoverflow.com" onclick="alert('Hello');"><span>Hello</span></a>
с помощью ctrl+click работает нормально (по крайней мере, в IE9). По-видимому, это «только» имеет значение, откуда возникает событие. <span>
достаточно, чтобы его скинуть.
- person pinkgothic; 02.06.2012
ctrl
+кликом в IE :), и мне удалось это исправить (наш случай был простым display:none
инициированным onclick
), поэтому я решил поделиться мое исправление. Ваш ответ очень помог! ^_^
- person pinkgothic; 02.06.2012
<span>
, предложенный @pinkgothic, отлично работает. Спасибо за это!
- person brotherli; 22.02.2014
Метод jQuery event.preventDefault() или аналогичный может переопределить поведение по умолчанию на ваших страницах. контроль над.
Как правило, изменение поведения браузера пользователя без веской причины является плохой практикой, поскольку браузер и его поведение принадлежат «их».
была та же проблема, что и у оператора, и она была решена путем присвоения атрибуту 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>
Добавить скрипт в якорь и вернуть 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