根据滚动位置

时间:2016-05-17 14:21:07

标签: javascript vb.net

我有一个从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);
    }

如果你能帮我解决这个问题,请提前致谢。

1 个答案:

答案 0 :(得分:0)

使用固定div怎么样?

<div class="fixedDialog" style="
    margin: auto;
    background: gray;
    padding: 10%;
    font-size: 50px;
    text-align: center;
    position: fixed;
    margin: 50px 30%;
    z-index: 9999;
">Fixed Dialog</div>

在页面流之外放置一个对话框。 enter image description here