如何让键盘上的箭头键触发博客内的导航(上一页/下一页)链接

Posted

技术标签:

【中文标题】如何让键盘上的箭头键触发博客内的导航(上一页/下一页)链接【英文标题】:how to get the arrow keys on the keyboard to trigger navigation (previous/next page) links within a blog 【发布时间】:2011-01-16 14:40:27 【问题描述】:

到目前为止,我拼凑的脚本如下所示:

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

我的 html 看起来像这样:

<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 代码代表动态页面链接,这些链接根据您所在的页面而有所不同。这个特定的问题是 tumblr 特有的,但通常也是如此:

有没有办法让我的左右箭头键触发这些动态链接?

感谢您的阅读,非常感谢您提供任何帮助。

【问题讨论】:

【参考方案1】:
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;
    
;

【讨论】:

evt = evt || window.event; 是关于什么的? @MadsSkjern:这适用于旧版本的 Internet Explorer(直到并包括版本 8),其中事件对象不作为参数提供给事件处理函数,而是作为 @987654325 提供@. 2021 年注意:evt.keyCode 已被弃用一段时间,您应该改用.code 或.key 来检测按下的键。例如:case "ArrowLeft": 左箭头键。【参考方案2】:

用它来告诉你 对象的keyIdentifier 属性。

<html>
<head>

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

然后您可以使用 if-then 逻辑忽略所有您不感兴趣的按键,并将正确的行为与您的行为联系起来。

以下将为您的链接分配左右箭头键(基于锚/链接元素的 id)。

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

【讨论】:

keyIdentifier 在大多数浏览器(包括当前版本的 Firefox)上不支持,因此还不适合在网络上一般使用。 感谢蒂姆的信息。我只在 Chrome 中测试过。 非常感谢您的帮助 eric,感谢您的努力

以上是关于如何让键盘上的箭头键触发博客内的导航(上一页/下一页)链接的主要内容,如果未能解决你的问题,请参考以下文章

如何让数字键盘箭头在 Linux 上与 Java 应用程序一起使用

wordpress 如何在子页面中导航上一页和下一页

如何在 Angular 9 中使用向上、向下、向左和向右箭头键导航动态输入和选择表内的字段?

如何使用箭头在 QtVirtualKeyboard 中导航

如何禁止在Qt中使用带有按钮的键盘上的箭头键

请问(js+html)怎么获取键盘的方向键,来控制图片上一张下一张?