我最近一直在负责搞清楚如何维护我公司内部的SharePoint 2010网站的滚动条位置。不幸的是,开箱即用的“MaintainScrollPositionOnPostBack”没有得到我们希望结合文本框聚焦要求的结果(包括隐藏字段中持久化值的问题)。内容不与滚动条滚动在Firefox
在我最有前途的解决方案,我在JavaScript设置滚动值滚动的SharePoint DIV(“#S4-工作区”),这样可以随时浏览器的后退/前进按钮被按下运行。 (在这种情况下,我在sessionStorage中存储滚动值,但我仍在试验其他持久性媒体)。
我使用下面的代码重新加载该滚动位置,在“S4-工作区”通过在SharePoint站点的主可滚动的div。
function RestoreScrollState(workspaceID) {
var itemScrollDataIdentifier = pageScrollDataIdentifier + '-' + workspaceID;
var coordStr = sessionStorage[itemScrollDataIdentifier];
if (coordStr) {
var scrollable = $('#' + workspaceID);
var coords = $.parseJSON(coordStr);
scrollable.scrollLeft(coords.x);
scrollable.scrollTop(coords.y);
return coords;
}
return null;
}
这IE8,IE9和Chrome的伟大工程,但我在Firefox(17.0.1)对面的一个问题运行。当我调用这个函数时,滚动条被设置到正确的位置,但's4-workspace'div内的内容仍然滚动到顶部(换句话说,内容不随滚动条滚动)。有趣的是,如果我在setTimeout中用两秒钟的等待将我的调用包围在这个函数中,它会滚动ok(但是较短的值不会)。
setTimeout(function() { RestoreScrollState('s4-workspace'); }, 2000);
我试过了一会儿,现在还没有找到有用的东西。有没有人遇到过这样的问题,并且除了长时间的暂停之外还有另外一种解决方法?