【发布时间】:2015-11-18 16:06:18
【问题描述】:
是否可以使用 JavaScript 防止箭头键滚动页面(在本示例中为水平滚动),但仍允许箭头键在文本字段内移动光标?
例如 - 我有一个超宽 <div> 的文本输入,当我使用箭头键将光标移动到文本的末尾时,它会水平滚动页面。
我知道我可以使用event.preventDefault(); 来防止默认行为,但这也可以防止光标移动。我也试过e.stopPropagation();,好像也没有用。
是否可以这样做,或者我必须使用e.preventDefault();,然后也使用 JavaScript 手动移动光标位置?我希望有一个更简单的解决方案。 :)
这是一个展示我的问题的 JSFiddle: http://jsfiddle.net/h6ug57u0/
编辑:
我应该注意,我只是在输入有焦点时才尝试实现这种行为。否则,我不想妨碍浏览器的默认行为 - 我知道许多用户使用箭头键滚动。
【问题讨论】:
-
仅供参考,该行为似乎取决于浏览器。在 IE11 中测试了您的小提琴,它不滚动 div,而 Chrome 的行为与您描述的一样。
-
是的,我现在也看到了。没试过。留给 IE 不一样吧……
-
我知道这在某些情况下会很烦人,但你应该非常小心地打算覆盖默认浏览器行为。您永远不知道什么时候会干扰您无意中的事情,甚至会弄乱残疾用户的特殊导航软件。
标签: javascript scroll horizontal-scrolling