jQuery:链接更改何时进行修饰 - 但链接停止工作
-
01-10-2019 - |
题
我正在尝试创建一个正常指向URL 1的链接,并在持有移位键时指向URL 2。我到达了此代码示例,该示例正确切换了链接(如链接悬停在浏览器状态栏中所示),但是单击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>
解决方案
似乎在按下Shift键时,浏览器有点忙于更新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>
现在唯一的问题是 - 正如罗曼·德沃德(Romain Deveaud)指出的那样 - 转移 +单击打开一个新的浏览器窗口。
其他提示
看来,因为换档键是按下DOM认为“浏览器”将处理特殊请求的。因此,当命令发送到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中起作用,但很骇人听闻。
不隶属于 StackOverflow