如何让键盘上的箭头键触发博客内的导航(上一页/下一页)链接
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 应用程序一起使用