【发布时间】: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