【问题标题】:ASP.NET Panel Scroll Position issueASP.NET 面板滚动位置问题
【发布时间】:2023-03-27 03:43:01
【问题描述】:

在尝试保存其中包含图像映射的面板的滚动位置时遇到了一个奇怪的问题。我们已经实现了滚动位置保存以及隐藏字段,在调试模式下效果很好,但在部署到服务器时不起作用。 scrollleft 总是重置为 0。我什至在边缘调试模式下捕捉到了这样一个事实,即虽然隐藏字段值可能是 1768,但在执行以下操作后,scrollleft 仍保持其值 0???

例子:

function restore_scroll(control_id) {
    panel = document.getElementById(control_id);
    savex = document.getElementById("savex");
    savey = document.getElementById("savey");

    if (panel != null && panel.hidden == false && savex != null && savey != null) {
        panel.scrollLeft = Number(savex.value);
        panel.scrollTop = Number(savey.value);
    }
}

在调试中,savex.value = "1768" 和行执行后 panel.scrollLeft 仍然等于 0??? 注意:我尝试从 string 转换为 num 但注意到这没有区别,只是没有变回来。

同样令人困惑的部分是调试时一切正常???

页面代码:

<asp:Panel ID="mappanel" runat="server" ScrollBars="Auto" 
    Width="1200px" Height="650px" ClientIDMode="Static" 
    onscroll="save_scroll('mappanel');">
    <table>
        <tr>
            <td id="facilitymaptd" clientidmode="Static" runat="server"
                onclick="point_it(event);">
                <asp:ImageMap ID="facilitymap" ClientIDMode="Static" 
                    runat="server" ImageAlign="Left" 
                    onclick="ImageMap1_Click" HotSpotMode="PostBack">
                </asp:ImageMap>
            </td>
        </tr>
        <!--
        <tr>
            <td>
                <canvas id="mapcan" runat="server">
                </canvas>
            </td>
        </tr>
        -->
    </table>
</asp:Panel>

我做了更多测试,发现这看起来像是一个时间问题。我正在根据搜索重新加载图像地图,如果我继续执行此搜索,那么有时它确实保留了滚动位置,有时它不保留???

我说这是时机,因为在我的开发机器上以调试方式运行时,图像映射的加载在技术上是在开发机器上本地的,而这种情况不会发生太多。在已部署的服务器上始终如一地发生,回发可能会更长一些。这听起来可能吗?

提前致谢

马歇尔

【问题讨论】:

  • onscroll="save_scroll('mappanel');" 与您的 js 函数名称不匹配。
  • bestinamir ...感谢您的回复,但这仅涉及页面的位置,而不是控件。谢谢!
  • wazz ...不确定您在说什么...他们确实匹配???

标签: javascript asp.net


【解决方案1】:

嗯......我有一个修复,但不知道为什么它解决了这个问题!?!? 问题的根源在于我们在每次回发时都更改了图像映射的 url(图像会根据热点点击而改变,这肯定是其他人所做的?)。重新加载图像确实搞砸了在窗口加载时执行的恢复滚动 javascript。我们意识到图像加载是在执行一个没有更改修复滚动问题的图像的测试时执行的,所以我们最终(只是偶然)将 restore_scroll 函数重新定位到图像映射的 onload 属性!砰!已修复调试模式和部署!

我的问题仍然可能是: 为什么这在窗口加载时不起作用?

无论如何...感谢大家的关注!

马歇尔

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多