我最近一直在負責搞清楚如何維護我公司內部的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);
我試過了一會兒,現在還沒有找到有用的東西。有沒有人遇到過這樣的問題,並且除了長時間的暫停之外還有另外一種解決方法?