2

我正在使用 asp.net 2.0 开发一个网站,我最近添加了几行javascript来保存scroll positiondiv across postbacks

问题是当页面加载时,div 的滚动位置从顶部开始,然后跳转到保存的位置。
如何摆脱这种跳跃效应?该网站位于 www.collectedlight.net。

这是我用来保持滚动位置的javascript:

window.onload = function () {
   //maintain the scroll position for the list of photos across postbacks
   var scrollPos = document.getElementById('ctl00_pagePlaceHolder_photoListScrollPos').value;
   document.getElementById('photoListScrollBar').scrollTop = scrollPos;
}

//save the scroll position of the list of photos
function SaveScrollPos() {
   var scrollPos = document.getElementById('photoListScrollBar').scrollTop;
   document.getElementById('ctl00_pagePlaceHolder_photoListScrollPos').value = scrollPos;
}

滚动位置确实被保存了,但是当页面加载时,我可以看到滚动位置首先设置为顶部,然后跳到保存的滚动位置。我希望页面在没有跳转效果的情况下在保存的滚动位置加载。这可能吗?

4

1 回答 1

0

通过将代码附加到window.onload事件中,您可以阻止代码运行,直到所有页面资产(包括图像)都加载完毕。这就是为什么您只在其中一张图片需要一段时间才能加载时才看到问题的原因。您可能可以通过附加到DOMContentLoaded事件来解决您的问题。通过在页面底部附加此事件,您可以确保在加载 DOM 和 CSS 并且您的页面布局基本上准备好后执行您的代码,而无需等待每个页面资源都加载完毕。有关详细信息,请参见此处:http: //ablogaboutcode.com/2011/06/14/how-javascript-loading-works-domcontentloaded-and-onload/

于 2013-02-15T22:00:07.057 回答