2010-07-01 51 views
1

我試圖創建一個指向URL 1的鏈接,當按住Shift鍵時鏈接指向URL 2。我到達了這個代碼示例,它正確地切換鏈接(如懸停在鏈接上時的瀏覽器狀態欄中所示),但單擊URL 2不起作用:瀏覽器不會執行任何操作。這是正確的:一個鏈接是存在的,但點擊它只是沒有做任何事情。jQuery:修改器關閉時鏈接改變 - 但鏈接停止工作

在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> 
+1

Shift +點擊鏈接打開一個新的瀏覽器窗口,也許這裏有一個問題? – 2010-07-01 14:24:50

回答

2

看來,瀏覽器得到了一點點太忙更新DOM,同時按下Shift鍵,所以我把標誌的地方:

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

現在唯一的問題是 - 正如羅曼Deveaud指出 - SHIFT +點擊打開一個新的瀏覽器窗口。

+0

Brillant,就像一個魅力!謝謝! – CruftyCraft 2010-07-05 07:27:20

+0

好東西。謝謝。 :) – 2010-07-05 13:02:34

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> 

而這似乎在谷歌瀏覽器中工作,但很hacky。

+0

我也這麼認爲,但是即使使用像「a」(鍵65)這樣的常規鍵而不是移位,問題仍然存在。 感謝您的示例,但不幸的是它不適用於Firefox或Safari。 – CruftyCraft 2010-07-01 14:39:34