我有一个从ASP.NET GridView调用的查找窗口。单击按钮时,我显示的是DIV标记,可以在其中查找帐号。问题是如果GridView中有很多行,默认情况下会在页面顶部附近显示DIV,因此用户必须向上滚动才能看到它。
我编写了JavaScript以确定当前滚动位置并相应地定位窗口,但是,当脚本执行时,滚动位置错误地显示为零。我不确定这是否是因为滚动位置尚未在页面启动时确定。我在页面上放置了一个链接,单击此按钮会尝试根据滚动位置移动div。 JavaScript作为锚标记的onClick事件的一部分加载,因此此时页面已完全加载。当我单击此链接时,确定正确的滚动位置并正确地重新定位窗口。
还有另一种方法可以在启动时获得正确的滚动位置吗?
这是我用来注册启动脚本的VB.NET代码......
Dim strStartupScript As New System.Text.StringBuilder()
strStartupScript.Append("<script type=""text/javascript"">")
strStartupScript.Append("var scrOfY = 0; ")
strStartupScript.Append("scrOfY = getScrollXY(); ")
'strStartupScript.Append("alert(scrOfY); ")
strStartupScript.Append("var div = document.getElementById('divLookupAccount'); ")
strStartupScript.Append("var newTop = 400; ")
strStartupScript.Append("newTop = newTop + (scrOfY / 2); ")
strStartupScript.Append("var num = newTop; ")
strStartupScript.Append("var n = num.toString(); ")
strStartupScript.Append("var s = n + 'px'; ")
strStartupScript.Append("div.style.top = s; ")
strStartupScript.Append("</script>")
Me.Page.ClientScript.RegisterStartupScript(Me.GetType(), "AccountLookupShow", strStartupScript.ToString)
以下是&#34; getScrollXY()&#34;的代码脚本中引用的函数......
function getScrollXY() {
var scrOfX = 0, scrOfY = 0;
if (typeof (window.pageYOffset) == 'number') {
//Netscape compliant
scrOfY = window.pageYOffset;
scrOfX = window.pageXOffset;
} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
//DOM compliant
scrOfY = document.body.scrollTop;
scrOfX = document.body.scrollLeft;
} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
//IE6 standards compliant mode
scrOfY = document.documentElement.scrollTop;
scrOfX = document.documentElement.scrollLeft;
}
return (scrOfY);
}
如果你能帮我解决这个问题,请提前致谢。