Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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函数_Javascript_Scroll - Fatal编程技术网

当所有元素的正确坐标已知时,执行javascript函数

当所有元素的正确坐标已知时,执行javascript函数,javascript,scroll,Javascript,Scroll,我的页面上有几个section元素-每个section元素都有一个id-值(例如id=“description”),如果该id-值作为参数存在于URL中(?section=description),那么它将滚动到页面上的该section元素。 在此,我使用的是window.onload功能 问题在于,页面上各部分元素的坐标(以及宽度和高度)在正确(在浏览器显示所有内容之前)确定得太早,因此滚动条最终会出现在错误的位置 例如,当由窗口确定时,截面元素与id=“description”的坐标错误。o

我的页面上有几个section元素-每个section元素都有一个
id
-值(例如
id=“description”
),如果该
id
-值作为参数存在于URL中(
?section=description
),那么它将滚动到页面上的该section元素。 在此,我使用的是
window.onload
功能

问题在于,页面上各部分元素的坐标(以及宽度和高度)在正确(在浏览器显示所有内容之前)确定得太早,因此滚动条最终会出现在错误的位置

例如,当由
窗口确定时,截面元素与
id=“description”
的坐标错误。onload

DOMRect { x: 665.2833251953125, y: 789.7666625976562, width: 
602.433349609375, height: 296.4666748046875, top: 789.7666625976562, right: 
1267.7166748046875, bottom: 1086.2333374023438, left: 665.2833251953125 }
例如,当同时使用
窗口时,正确的协调。onload
但另外使用
timeOut
功能等待2秒:

DOMRect { x: 538.2999877929688, y: 860.2000122070312, width: 
856.4000244140625, height: 155.60000610351562, top: 860.2000122070312, 
right: 1394.7000122070312, bottom: 1015.8000183105469, left: 
538.2999877929688 }
使用setTimeout不是解决方案。有没有其他方法来判断元素的坐标何时可以正确确定


非常感谢您的提示。

您可以在上查看这个问题。我想如果您使用哈希而不是
?section=
,那么浏览器会自动为您完成滚动。例如,如果您有一个指向的链接,只要该元素可用,它就会自动滚动到id=description的元素。。。问题在于检测元素何时在页面中可见。解决方案是添加一个CSS样式,将无用的动画添加到要检测其可见性的元素中。动画无法执行任何操作(例如,从不透明度1变为1)。好处是您可以将事件侦听器添加到该元素上的animationstart事件中。因此,当元素变为可见时,它会导致播放一个无用的动画,这会导致一个animationstart事件,该事件会触发您的侦听器,您可以在其中滚动到该元素。您可以在上查看这个问题。我想,如果您使用哈希而不是
?section=
,则浏览器会自动为您完成滚动。例如,如果您有一个指向的链接,只要该元素可用,它就会自动滚动到id=description的元素。。。问题在于检测元素何时在页面中可见。解决方案是添加一个CSS样式,将无用的动画添加到要检测其可见性的元素中。动画无法执行任何操作(例如,从不透明度1变为1)。好处是您可以将事件侦听器添加到该元素上的animationstart事件中。所以,当元素变得可见时,它会导致播放一个无用的动画,这会导致一个animationstart事件,它会触发您的侦听器,您可以在其中滚动到该元素。