JS 功能适用于所有浏览器但不是所有机器

问题描述

我正在寻找可能的原因而不是解决方案。鉴于我的情况,我不知道这种格式是否被允许,但老实说,我对这种奇怪行为的原因一无所知,不知道是否有一个答案(可能不是)。

我在使用 scrollIntoView 函数时遇到了一个奇怪的问题。该函数使用一个 div 元素的 id 来引用另一个元素中的另一个 div 来模拟一个索引。我只使用了 Javascript 来做到这一点,并在以下浏览器中进行了测试(所有这些浏览器都是最新版本):Firefox(开发版和常规版)、Google Chrome、Midori、Vivaldi、Edge (Chromium) 和 Opera。它以预期的方式在所有这些选项中工作,但在基于 Chromium 的浏览器中不起作用。

现在,昨天我推出了一些更改以呈现给客户。一位大四学生在测试代码时注意到 scrollIntoView 在他的机器上不起作用(使用最新的 Chrome)。我们仔细检查我们有相同的代码并没有发现任何不同。我让一位前端资深人士看了一下,过了一会儿他说可以,但对他来说也不起作用(再次,最新的 Chrome)。我们没有更多时间看它,因为我们必须去开会。无论如何,在会议期间发生了最后一件奇怪的事情:我没有显示索引,但是使用 scrollIntoView 的其他函数在客户端机器上的 Chrome 中运行流畅(一些谷歌浏览器。无法找到确切的版本)。

因此,它可以在我的浏览器中使用,而不是在我的高级浏览器中,但在客户端中也可以使用。

由于我们对浏览器、操作系统和工具版本进行了标准化,我正在尝试弄清楚这会发生什么。代码也很简单,老实说,我认为这不是软件版本的问题。此外,虽然我们客户的 Chrome 中的平滑滚动很奇怪,但我认为这只是他们的机器出于某种原因打开了该标志,但在那里工作的其他功能告诉我 scrollIntoView 本身并不是真正的问题(有点)。

我的功能(不起作用)

function navi(id,ns){ 
    var elem = $('$' + id)[0];
    var indice = zk.$('$indice').$n('real');
    elem.scrollIntoView({behavior: "smooth"});
    indice.placeholder = ns;
}

有效的功能

function getDivInvol(id){
    var elem = zk.$('$d' + id).$n();
        estiloActual = elem.className;
        eBound = elem.getBoundingClientRect();
        pBound = zk.$('$listenerD').$n().getBoundingClientRect();
    elem.className = 'ridgeSelect ' + estiloActual;
        if(eBound.bottom >= pBound.bottom || eBound.top <= pBound.top){
            elem.scrollIntoView({behavior: "instant",block: "center"});            
        }
}
function rGetDivInvol(id){
    var div = '$i' + id;
        elem = zk.$(div).$n();
        eBound = elem.getBoundingClientRect();
        pBound = zk.$('$listenerI').$n().getBoundingClientRect();
    if(eBound.bottom >= pBound.bottom || eBound.top <= pBound.top){
            elem.scrollIntoView({block: "center"});         
        }
    $(div).effect("highlight",{color: "#7dc0ff"},1500);
}

我可以调查什么来确定这种行为?我无法访问其他计算机,并且出于安全原因,我真的不想在另一台计算机上设置我的环境。脚本本身似乎没问题,不需要从服务器调用该函数(我可以尝试但无法测试,所以我想坚持使用 JS)。

我正在研究 Windows 10 Pro(1904)、Java + Zk on Spring 和一系列浏览器。我想到的解决方案是尝试使用 JQuery 的 scrollTop 或从服务器调用该函数,但同样,我正在寻找我的 JS 仅在某些机器上工作的原因。

任何帮助将不胜感激。节日快乐。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)