我正在使用以下代码来维护ListBox在帖子后面的滚动位置。
<script type="text/javascript">
// Helps maintain scroll position on the Specialty list box.
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
function BeginRequestHandler(sender, args)
{
var listBox = $get('<%= Special.ClientID %>');
if (listBox != null)
{
xPos = listBox.scrollLeft;
yPos = listBox.scrollTop;
}
}
function EndRequestHandler(sender, args)
{
var listBox = $get('<%= Special.ClientID %>');
if (listBox != null)
{
listBox.scrollLeft = xPos;
listBox.scrollTop = yPos;
}
}
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
</script>
这在Firefox 5或Chrome中完美运行。虽然,在IE8 / IE9中,每当我在列表框中选择一个项目时,它都会发回一个帖子并且列表框保持滚动位置。问题是,如果我在框中完全滚动,或者单击箭头,回滚后,滚动位置会快速回到列表框的顶部!
在Firefox或Chrome中不会发生回滚滚动。
感谢您的帮助。
答案 0 :(得分:0)
可能已经过了很长时间,但却没有被观看过2071次:
s是id =&#34; mySelect&#34;多重选择的名称
fs是select
的字体大小function SetScrollTop(s, fs)
{
if(document.getElementById(s) != null)
{
document.getElementById(s).scrollTop = (document.getElementById(s).selectedIndex * fs) + 1;
}
}
使用body onload =&#34; SetScrollTop(&#39; mySelect&#39;,14)&#34;来调用此函数。
IE在帖子背面将滚动顶部设置为零,因此您需要以某种方式跟踪所选项目(cookie或自制会话处理程序?),以便您可以使用&#39;选择& #39;所选项目的属性。然后在负载期间设置滚动顶部。