"空间"分页在浏览器中是如何工作的



想象一个页面有两个并排的<div>元素,如https://nodejs.org/dist/latest-v12.x/docs/api/.

左侧的<div>在页面之间导航。右边的有实际内容。

当我按下space(空格键(时,浏览器会将右侧<div>的内容提前一个屏幕,这让人想起传统的UNIX寻呼机more。(IIRC,自NCSA Mosaic以来,这一直是相当标准的浏览器行为。(

然而,有时我想滚动左边的列("导航"列(。当按下space时,浏览器如何决定滚动哪一列?document.activeElement<body>,是这两个列<div>元素的祖先。我希望能够使用bookmarklet(或扩展(来更改焦点——我很乐意自己编写,但据我所知,这种机制似乎不受HTMLElement.focus()的控制。

当按下空格键(或箭头键、pg down、pg up等(时,浏览器会滚动当前活动元素的最近可滚动父元素。当您打开页面时,活动元素是<html>,这是将被滚动的元素(如果它是可滚动的(,并且它的流内容超过了它的高度(默认情况下,它是视口的height(。

如果当前活动元素是侧边栏或其子元素之一,则按空格键将滚动侧边栏,而不是<html>元素。您可以通过各种方法(点击、按tab、编程等(更改活动元素

使用tabIndex属性通过focus((对其进行操作

对于您提供的xmpl页面:

document.getElementById("column2").tabIndex = 0;
document.getElementById("column1").tabIndex = 0;
document.addEventListener("keydown",function(){
if(event.ctrlKey){
if(document.activeElement.id=="column1")
document.getElementById("column2").focus();
else
document.getElementById("column1").focus();
}
});

相关内容

最新更新