1window.myAcademicPageState = { 2 save: function (key, json) { 3 try { 4 console.log("[PageState] save", key, json); 5 sessionStorage.setItem("myAcademic:pageState:" + key, json); 6 } catch (e) { 7 console.error("[PageState] save error", e); 8 } 9 }, 10 11 load: function (key) { 12 try { 13 const value = sessionStorage.getItem("myAcademic:pageState:" + key); 14 console.log("[PageState] load", key, value); 15 return value; 16 } catch (e) { 17 console.error("[PageState] load error", e); 18 return null; 19 } 20 }, 21 22 remove: function (key) { 23 try { 24 console.log("[PageState] remove", key); 25 sessionStorage.removeItem("myAcademic:pageState:" + key); 26 } catch (e) { 27 console.error("[PageState] remove error", e); 28 } 29 }, 30 31 getScrollY: function () { 32 const y = window.scrollY || document.documentElement.scrollTop || 0; 33 console.log("[PageState] getScrollY", y); 34 return y; 35 }, 36 37 setScrollY: function (y) { 38 try { 39 console.log("[PageState] setScrollY", y); 40 window.scrollTo({ top: y || 0, behavior: "auto" }); 41 } catch (e) { 42 console.error("[PageState] setScrollY error", e); 43 } 44 } 45};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.