2010-02-14 16 views
10

i şimdiye kadar birlikte parçalı ettik script şöyle:nasıl bir blog içinde gezinmeyi (önceki/sonraki sayfa) bağlantıları tetiklemek için klavyedeki ok tuşlarını almak için

<script type="text/javascript"> 
/* KEYNAV */ 
document.onkeydown = function(e) { 
if (! e) var e = window.event; 
var code = e.charCode ? e.charCode : e.keyCode; 
if (! e.shiftKey && ! e.ctrlKey && ! e.altKey && ! e.metaKey) { 
if (code == Event.KEY_LEFT) { 
if ($('previous_page_link')) location.href = $('previous_page_link').href; 
} else if (code == Event.KEY_RIGHT) { 
if ($('next_page_link')) location.href = $('next_page_link').href;} 
} 
}); 
</script> 

ve benim html benziyor Bu:

<p> 
{block:PreviousPage} 
<a id="previous_page_link" href="{PreviousPage}">PREVIOUS PAGE</a> 
{/block:PreviousPage} 

{block:NextPage} 
<a id="next_page_link" href="{NextPage}">NEXT PAGE</a> 
{/block:NextPage} 
</p> 

{PreviousPage}/{NextPage} kodu, üzerinde hangi sayfa bağlı olarak farklılık gösterir dinamik sayfa bağlantıları temsil eder. Bu özel soru genellikle de stat özgüdür, ancak: bu dinamik bağlantıları tetiklemek için sol ve sağ ok tuşlarını almanın bir yolu

var mı?

Kitap okuma için teşekkürler ve bu konuda herhangi bir yardım büyük beğeni topluyor.

cevap

36
function leftArrowPressed() { 
    // Your stuff here 
} 

function rightArrowPressed() { 
    // Your stuff here 
} 

document.onkeydown = function(evt) { 
    evt = evt || window.event; 
    switch (evt.keyCode) { 
     case 37: 
      leftArrowPressed(); 
      break; 
     case 39: 
      rightArrowPressed(); 
      break; 
    } 
}; 
+0

nice work tim çok teşekkürler! – dfogge

+0

Nedir? Evt = evt || window.event; 'hakkında? –

+0

@MadsSkjern: Bu, Internet Explorer'ın eski sürümleri için (sürüm 8'e kadar ve dahil), olay nesnesinin olay işleyici işlevine bir parametre olarak sağlanmadığı ve bunun yerine "window.event" olarak kullanılabildiği. –

3

nesnesinin keyIdentifier özniteliğini belirtmek için bunu kullanın.

<html> 
<head> 

<script type="text/javascript"> 
    document.onkeydown = function() { 
    alert (event.keyIdentifier); 
}; 
</script> 
</head> 
<body> 
</body> 
</html> 

Sonra tüm tuş ilgilenmiyor presleri ve tel sen olanları doğru davranış görmezden şart-mantığı kullanabilirsiniz.

şu (çapa/link elemanlarının kimliği temelinde) bağlantılarınıza sağ ve sol ok tuşları atar.

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
      document.onkeydown = function() 
       { 
        var j = event.keyIdentifier 
        if (j == "Right") 
         window.location = nextUrl 
        else if (j == "Left") 
         window.location = prevUrl    
         } 
        }); 

     $(document).ready(function() { 
        var nextPage = $("#next_page_link") 
        var prevPage = $("#previous_page_link") 
        nextUrl = nextPage.attr("href") 
        prevUrl = prevPage.attr("href") 
       }); 

</script> 
</head> 
<body> 
<p> 
    <a id="previous_page_link" href="http://www.google.com">Google</a> 
    <a id="next_page_link" href="http://www.yahoo.com">Yahoo</a> 
</p> 
</body> 
</html> 
+2

'keyIdentifier' yüzden henüz web'de genel kullanım için uygun değildir, (Firefox'un güncel sürümü dahil) çoğu tarayıcıda desteklenmez. –

+0

Bilgi için teşekkürler Tim. Sadece Chrome'da test ettim. – ecounysis

+0

Yardımınız için çok teşekkürler eric çabaya değer takdir edildi – dfogge

İlgili konular