Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome浏览器自动向下滚动内容(无人要求时)_Javascript_Google Chrome - Fatal编程技术网

Javascript Chrome浏览器自动向下滚动内容(无人要求时)

Javascript Chrome浏览器自动向下滚动内容(无人要求时),javascript,google-chrome,Javascript,Google Chrome,我们有丰富的网页,其中我们有一个动态内容的小块。直到最近,一切都很顺利 现在,Chrome浏览器以某种方式“捕获”页面上的一个div,并向下滚动整个内容。这很难用语言来解释,但更容易证明 这是测试页面。只需在Chrome中打开它,向下滚动一点,使其中一个蓝色框位于视口的最上边界。您将看到,当蓝色框停留在同一位置时,所有内容(数字1、2、3..)都会自动滚动 在这个简单的例子中,它可能看起来是合乎逻辑的,但是考虑到动态块只是页面上许多块中的一个,并且没有理由滚动整个内容,因为块内有一些变化。 &l

我们有丰富的网页,其中我们有一个动态内容的小块。直到最近,一切都很顺利

现在,Chrome浏览器以某种方式“捕获”页面上的一个div,并向下滚动整个内容。这很难用语言来解释,但更容易证明

这是测试页面。只需在Chrome中打开它,向下滚动一点,使其中一个蓝色框位于视口的最上边界。您将看到,当蓝色框停留在同一位置时,所有内容(数字1、2、3..)都会自动滚动

在这个简单的例子中,它可能看起来是合乎逻辑的,但是考虑到动态块只是页面上许多块中的一个,并且没有理由滚动整个内容,因为块内有一些变化。

<html>
<body>

<div id="x" style="border:solid 1px red;width:200;height:200">
</div>

1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>
11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>


<script>
setInterval(function () {
    var e = document.createElement('div');
    e.setAttribute("style", "border:solid 2px blue;width:100px;height:20px");

    var x = document.getElementById('x');
    x.insertBefore(e, x.childNodes.length?x.childNodes[0]:null);
}, 1000);

</script>

</body>
</html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
setInterval(函数(){ var e=document.createElement('div'); e、 setAttribute(“样式”,“边框:实心2px蓝色;宽度:100px;高度:20px”); var x=document.getElementById('x'); x、 insertBefore(e,x.childNodes.length?x.childNodes[0]:null); }, 1000);
我们这周刚刚发现了这种奇怪的行为。该代码在过去6个月内运行良好,因此我认为这是Chrome所做的新东西。所有其他浏览器都可以正常工作

==更新==


使用Chrome(我有最新的v.56.0.2924.87(64位))浏览并向下滚动,直到“实时搜索”(包含移动单词的框)出现在浏览器的顶部。您将体验到整个页面开始移动,而不是正常的行为。

这可能是因为chrome 56的滚动定位功能

解决此问题的方法是设置
溢出锚点:无。供你的参考网站

#dvLiveSearch{
   overflow-anchor: none;
}

这将修复chrome上的奇怪行为。

平台?版本对于Linux.Windows 10,Chrome版本56.0.2924.87(64位),不在56.0.2924.87上滚动。我们还可以在不同的机器上复制,并且我们有多个用户报告。您已经滚动过要插入的元素,在添加元素时,浏览器的逻辑行为是尝试将您保持在当前视口中。你的问题是什么?是将(现在不可见的)子元素从视图中移除导致了滚动。这里有一把来自@DanEsparza的小提琴,它再现了这种行为:很好的回答!你得到了赏金@MikeKeskinov你必须手动提供赏金或支票。如果你不这样做,他只会得到一半的赏金。另一半会消失。不用担心,你知道了:)@MikeKeskinov谢谢你的赏金。@pakalbekim你的问题似乎不相关,尽管它只发生在Chrome上。向正文中添加
溢出锚点:none
无法解决此问题。问题似乎与底部的modals有关,添加了
.modal{display:none;}
这确实解决了问题,可能是因为tabindex。