1

通常は URL 1 を指し、Shift キーを押したままにすると 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>
4

2 に答える 2

2

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 が指摘したように、SHIFT+ クリックすると新しいブラウザ ウィンドウが開くことです。

于 2010-07-01T14:48:44.507 に答える
0

Shift キーが押されているため、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 で動作するようですが、かなりハックです。

于 2010-07-01T14:28:56.077 に答える