Domanda

Sto cercando di creare un collegamento che punta a URL 1 normalmente e per URL 2 quando il tasto shift viene tenuto premuto. Sono arrivato a questo esempio di codice, che commuta correttamente i link (come indicato nella barra di stato del browser quando si libra sopra il link), ma cliccando sulla URL 2 non funziona: il browser semplicemente non fa nulla. Proprio così:. Un link è presente, ma cliccando semplicemente non fa nulla

Abbiamo provato questo in Firefox 3.6.6 e Safari 5.0, stesso risultato in entrambi.

Eventuali suggerimenti? Grazie!

<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>
È stato utile?

Soluzione

Sembra che il navigatore ha ottenuto un po 'troppo occupato aggiornamento il DOM, mentre il tasto shift è stato premuto, così ho messo una bandiera sul posto:

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

L'unico problema ora è che - come sottolineato da Romain Deveaud -. SHIFT + clic si apre una nuova finestra del browser

Altri suggerimenti

Sembra che causa il tasto shift si tiene premuto il Dom pensa che il "browser" gestirà una richiesta speciale. in modo che quando il comando viene inviato al DOM Per aprire fallisce.

Ho fatto un piccolo test e venire con questo.

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

E questo sembra funzionare in Google Chrome, ma è abbastanza hacky.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top