jQuery: Link zu ändern, wenn Modifier gedrückt gehalten wird - aber Link funktioniert nicht mehr

StackOverflow https://stackoverflow.com/questions/3158651

Frage

Ich versuche, einen Link, dass Punkte auf URL erstellen 1 normal und URL 2, wenn die Shift-Taste gedrückt wird. Ich kam in diesem Codebeispiel, die richtig die Links-Schalter (wie in der Browser-Statusleiste angezeigt, wenn sie über den Link schwebt), aber auf URL klicken 2 nicht funktioniert: der Browser einfach nichts tut. Das ist richtig: a. Link vorhanden ist, aber Klicken auf es funktioniert einfach nichts tun

versucht, diese in Firefox 3.6.6 und Safari 5.0, das gleiche Resultat in beiden.

Für Hinweise? Dank!

<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>
War es hilfreich?

Lösung

Es scheint der Browser ein wenig zu sehr damit beschäftigt Aktualisierung den DOM bekam, während die Shift-Taste gedrückt wurde, so dass ich eine Flagge in Kraft gesetzt:

<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>

Nur jetzt Problem ist, dass - Wie von Romain Deveaud -. SHIFT + Klicken Sie auf ein neues Browserfenster öffnen

Andere Tipps

Es sieht aus wie, weil die Shift-Taste gedrückt gehalten wird der Dom denkt, dass der „Browser“ wird eine besondere Anforderung verarbeiten. so dass, wenn der Befehl an das DOM gesendet wird Um sie zu öffnen scheitert.

ich einen kleinen Test gemacht und kommen mit dieser.

<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>

Und das scheint zu funktionieren in Google Chrome, aber es ist ziemlich hacky.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top