Я пытаюсь создать ссылку, которая указывает на URL 1 обычно и на URL 2, когда клавиша Shift удерживается. Я прибыл в этот пример кода, который правильно переключает ссылки (как обозначено в строке состояния браузера при парении над ссылкой), но нажатие на URL 2 не работает: браузер просто ничего не делает.Верно: ссылка присутствует, но нажатие на нее просто ничего не делает.
Попробованный это в Firefox 3.6.6 и Safari 5.0, том же результате в обоих.
Какие-либо подсказки?Спасибо!
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script>
$(document).keydown(function(event) {
if (event.keyCode == '16') {
$("#mylink").text("My Link Extended");
$("#mylink").attr("href", "http://www.google.com/");
}
});
$(document).keyup(function(event) {
if (event.keyCode == '16') {
$("#mylink").text("My Link");
$("#mylink").attr("href", "bla");
}
});
</script>
<a href="normalurl" id="mylink">My Link</a>
Похоже, браузер слишком занят обновлением DOM, пока происходит сдвиг. была нажата клавиша, поэтому я установил флажок:
<script type="text/javascript">
$(document).ready(function() {
var ExtendedLinkShown=false;
$(document).keydown(function(event) {
if (!ExtendedLinkShown && event.keyCode == '16') {
$("#mylink").text("My Link Extended");
$("#mylink").attr("href", "http://www.google.com/");
ExtendedLinkShown=true;
}
});
$(document).keyup(function(event) {
if (event.keyCode == '16') {
$("#mylink").text("My Link");
$("#mylink").attr("href", "bla");
ExtendedLinkShown=false;
}
});
});
</script>
Единственная проблема сейчас в том, что - Как указал Ромен Дево - SHIFT + Щелчок открывает новое окно браузера.
Похоже, что из-за нажатой клавиши shift Дом думает, что "браузер" будет обрабатывать специальный запрос. поэтому, когда команда отправляется в DOM Для открытия, она не срабатывает.
Я провел небольшой тест и пришел к следующему.
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script>
$(document).keydown(function(event) {
if (event.keyCode == '16') {
event.keyCode = null; //Remove that
$("#mylink").text("My Link Extended");
$("#mylink").attr("href", "http://www.google.com/");
event.keyCode = '16'; //Add it back
}
});
$(document).keyup(function(event) {
if (event.keyCode == '16') {
event.keyCode = null; //Remove that
$("#mylink").text("My Link");
$("#mylink").attr("href", "bla");
event.keyCode = '16'; //Add it back
}
});
</script>
<a href="normalurl" id="mylink">My Link</a>
И это, кажется, работает в Google Chrome, но довольно хакерски.