Javascript 在Java脚本中,当焦点到达屏幕的末尾时,滚动到中间

Javascript 在Java脚本中,当焦点到达屏幕的末尾时,滚动到中间,javascript,Javascript,功能:我在页面上添加了文本框和链接。页面上的每个元素都分配了tabIndex。您可以从文本框中弹出选项卡,然后按上下箭头键,我们可以遍历链接 问题:当我到达屏幕末端时,我想将窗口滚动到中间。我已经计算了偏移量来找出底部,但它有时有效,有时无效 注意:主要是在chrome中,但不知怎的,它是如何工作的!!但这不适用于任何其他浏览器 JavaScript函数: function abc(event) { // Find active Element tabIndex var tab

功能:我在页面上添加了文本框和链接。页面上的每个元素都分配了
tabIndex
。您可以从文本框中弹出选项卡,然后按上下箭头键,我们可以遍历链接

问题:当我到达屏幕末端时,我想将窗口滚动到中间。我已经计算了偏移量来找出底部,但它有时有效,有时无效

注意:主要是在chrome中,但不知怎的,它是如何工作的!!但这不适用于任何其他浏览器

JavaScript函数:

function abc(event) {
    // Find active Element tabIndex
    var tabIndexElement = document.activeElement.tabIndex;

    // tabIndex for element is 0 then send focus back to first search link
    if (tabIndexElement == 38) {
        document.querySelector('[tabIndex="2"]').focus();
        event.preventDefault();
        return;
    }

    // Based on Up and Down Key press move focus from next or previous search links
    if (event.keyCode == 38) { // up key press
        var queryString = '[tabindex="' + (--tabIndexElement) + '"]';
        var currentElement = document.querySelector(queryString);
        currentElement.focus();
        event.preventDefault();
        // I will work on up event
    }

    if (event.keyCode == 40) { // down key press
        var queryString = '[tabindex="' + (++tabIndexElement) + '"]';
        var currentElement = document.querySelector(queryString);
        currentElement.focus();

        // This is what i think how can i approach this
        var h = window.innerHeight;
        var rect = currentElement.getBoundingClientRect();
        var offset = h - rect.top;
        currentElement.innerHTML = currentElement.innerHTML + ' offset:'+offset+' rectb:'+rect.bottom;
        if (offset < 0) {
            currentElement.innerHTML = currentElement.innerHTML + ' scroll';
            window.scrollTo(0, rect.top);
        } else {
            currentElement.innerHTML = currentElement.innerHTML + ' scroll1';
            event.preventDefault();
        }
    }

    return true;
}
功能abc(事件){
//查找活动元素选项卡索引
var tabIndexElement=document.activeElement.tabIndex;
//元素的tabIndex为0,然后将焦点发送回第一个搜索链接
if(tabIndexElement==38){
document.querySelector('[tabIndex=“2”]').focus();
event.preventDefault();
返回;
}
//根据上下键,从下一个或上一个搜索链接移动焦点
如果(event.keyCode==38){//按向上键
var queryString='[tabindex=“”+(-tabIndexElement)+'”];
var currentElement=document.querySelector(queryString);
currentElement.focus();
event.preventDefault();
//我将致力于这项活动
}
如果(event.keyCode==40){//按下向下键
var queryString='[tabindex=“”+(++tabIndexElement)+'”];
var currentElement=document.querySelector(queryString);
currentElement.focus();
//这就是我想的,我该怎么做
var h=窗内高度;
var rect=currentElement.getBoundingClientRect();
var offset=h-rect.top;
currentElement.innerHTML=currentElement.innerHTML+'offset:'+offset+'rectb:'+rect.bottom;
如果(偏移量<0){
currentElement.innerHTML=currentElement.innerHTML+“滚动”;
滚动到(0,矩形顶部);
}否则{
currentElement.innerHTML=currentElement.innerHTML+“scroll1”;
event.preventDefault();
}
}
返回true;
}
提前谢谢