【问题标题】:Using keyboard keys as navigation使用键盘键作为导航
【发布时间】:2012-07-10 01:18:54
【问题描述】:

我正在开发一个博客主题,我想要键盘导航。我知道这与键盘键的 id 有关,但我已经寻找了 3 个小时,但仍然没有找到一个简单的解决方案。以下是我想按下的键以及我希望他们执行的操作。

  • J - 向下滚动到下一篇文章
  • K - 向上滚动到上一篇文章
  • R - 使用该帖子的转发 URL 打开一个新标签页
  • P - 使用该帖子的永久链接 URL 打开一个新选项卡

如果有人可以帮助我,那将非常有帮助。另外,我知道您可以通过在 URL 中设置链接来做一些事情,例如<article data-reblog-url="http://reblogurl" data-permalink-url="{Permalink}">,但我不知道如何在按下 R & P 键时让浏览器打开一个新选项卡,并将该​​数据作为 URL。另外,J & K,我希望浏览器平滑滚动到帖子的顶部,包括帖子的 margin-top。

如果有人可以帮助我完成整个代码,我将不胜感激。我知道这很多,我可能会对此表示反对,但就像我说的那样,我已经尝试了一个多小时,我只需要专家的帮助。

【问题讨论】:

    标签: javascript jquery keyboard


    【解决方案1】:

    一个多小时不算多。但这里有一些东西可以帮助您入门:

    您可以通过检查事件对象上的which 来可靠地检查按下了哪个键。我做了一个演示,你可以看看如何检查按下了哪个键。

    演示: http://jsfiddle.net/RXPhP/

    问题:该事件仅在具有焦点的元素上触发,因此您最好将其绑定到 body 或 document 以进行导航。

    【讨论】:

    • 这有助于找出键码,但在滚动到帖子以及打开新标签方面我仍然需要帮助。我将需要一个带有大量代码的巨大答案。 @ahren
    • 要滚动到帖子,请使用 scrollTo(yPosOfElement('some id'));并编写自己的 yPosOfElement(id) 函数来获取元素的 Y 偏移量
    • @JamesCharless - 如果我要为你写整件事,那将违背这一切的目的(那个目的是你学习)。您可以组合在其他地方找到的信息,或将问题分解为更小的部分。以下是一些可以帮助您的资源:@​​987654322@stackoverflow.com/questions/2905867/…
    【解决方案2】:

    这样的事情会给你一个好的开始。如果您不能使用任何库,那么您可以使用

    <script>
    
    var keyMap = [];
    keyMap["j"] = 106;
    keyMap["k"] = 107;
    keyMap["r"] = 114;
    keyMap["p"] = 112;
    
    window.onkeypress = function (event) {
     var asciiVal = (event.which) ? event.which : event.keyCode;
     //Write a switch here to individually handle input.
    }
    

    【讨论】:

    • 我将使用 jQuery 库。
    【解决方案3】:

    http://www.w3schools.com/jsref/event_onkeypress.asp 用于按键事件。它允许您在按下某个键时执行 js。 js 会收到一个事件event,它会告诉你按下了什么键。根据按键,您将 do something 否则 nothing

    【讨论】:

    • 讨厌所有你想要的,该网站对于学习多种语言的人来说是一个令人难以置信的资源
    • 来自网站的@Tats_innit:WE BELIEVE W3SCHOOLS IS HARMFUL TO THE WEB. WEB DEVELOPERS DESERVE BETTER.,请继续阅读 ;)
    • @reagan 我并不讨厌,我认为你应该得到更好的 :),但无论如何这都是你的决定 :)
    • @SiGanteng 明白了,但我没有使用这个资源,只是推荐它用于快速查找。仅仅因为它的名字是 W3 并没有任何意义,但你不能否认它是一个很好的资源,可以快速找到有关 html/js/css 等的信息
    • @reagan - w3fools.com 并没有抱怨 W3 的名称,而是抱怨提供给开发人员的信息已过时且不正确 - 这绝对不利于学习。
    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2016-06-21
    • 2015-12-06
    相关资源
    最近更新 更多