dajare

scroll position test

Aug 13th, 2010
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function() {
  2.     function loadScroll() {
  3.         var cookieList = document.cookie.split(';');
  4.         for (var i = 0; i < cookieList.length; i++) {
  5.             var cookieParts = cookieList[i].split('=');
  6.             if (cookieParts[0] == 'scrollPosition') {
  7.                 var values = unescape(cookieParts[1]).split('/');
  8.                 for (var j = 0; j < values.length; j++) {
  9.                     var currentValue = values[j].split(',');
  10.                     try {
  11.                         if (currentValue[0] == 'window') {
  12.                             window.scrollTo(currentValue[1], currentValue[2]);
  13.                         } else if (currentValue[0]) {
  14.                             var elm = document.getElementById(currentValue[0]);
  15.                             elm.scrollLeft = currentValue[1];
  16.                             elm.scrollTop = currentValue[2];
  17.                         }
  18.                     } catch (ex) { }
  19.                 }
  20.                 return;
  21.             }
  22.         }
  23.     }
  24.     function saveScroll() {
  25.         var s = 'scrollPosition=';
  26.         var wl, wt;
  27.        
  28.         wl = f_scrollLeft();
  29.         wt = f_scrollTop();
  30.        
  31.         function f_scrollLeft() {
  32.             return f_filterResults (
  33.                 window.pageXOffset ? window.pageXOffset : 0,
  34.                 document.documentElement ? document.documentElement.scrollLeft : 0,
  35.                 document.body ? document.body.scrollLeft : 0
  36.             );
  37.         }
  38.         function f_scrollTop() {
  39.             return f_filterResults (
  40.                 window.pageYOffset ? window.pageYOffset : 0,
  41.                 document.documentElement ? document.documentElement.scrollTop : 0,
  42.                 document.body ? document.body.scrollTop : 0
  43.             );
  44.         }
  45.         function f_filterResults(n_win, n_docel, n_body) {
  46.             var n_result = n_win ? n_win : 0;
  47.             if (n_docel && (!n_result || (n_result > n_docel)))
  48.                 n_result = n_docel;
  49.             return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
  50.         }        
  51.         var elements='';
  52.         if (document.getElementsByName("part[0][content]").length > 0) {
  53.             elements = document.getElementsByName("part[0][content]");
  54.         } else if (document.getElementsByName("snippet[content]").length > 0) {
  55.             elements = document.getElementsByName("snippet[content]");
  56.         } else if (document.getElementsByName("layout[content]").length > 0) {
  57.             elements = document.getElementsByName("layout[content]");
  58.         } else if (document.getElementsByName("file[content]").length > 0) {
  59.             elements = document.getElementsByName("file[content]");
  60.         }
  61.         var e = elements[0];
  62.         if (e.id && (e.scrollLeft || e.scrollTop)) {
  63.             s += e.id + ',' + e.scrollLeft + ',' + e.scrollTop + '/';
  64.         }
  65.         document.cookie = s + ';';
  66.     }
  67.     var addEvent, eventPrefix;
  68.     if (window.attachEvent) {
  69.         addEvent = window.attachEvent;
  70.         eventPrefix = 'on';
  71.     } else {
  72.         addEvent = window.addEventListener;
  73.         eventPrefix = '';
  74.     }
  75.     addEvent(eventPrefix + 'load', function() {
  76.         loadScroll();
  77.         if (typeof Sys != 'undefined' && typeof Sys.WebForms != 'undefined') {
  78.             Sys.WebForms.PageRequestManager.getInstance().add_endRequest(loadScroll);
  79.             Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(saveScroll);
  80.         }
  81.     }, false);
  82.     addEvent(eventPrefix + 'unload', saveScroll, false);
  83. })();
Add Comment
Please, Sign In to add comment