포스트 백에서 스크롤 위치를 저장/복원하려고합니다. 내 코드는 Firefox 및 Internet Explorer를 제외한 모든 주요 브라우저에서 작동합니다.JavaScript를 사용하여 Internet Explorer 쿠키가 올바르게 설정되지 않았습니다.
function saveScrollPosition() {
// Save the cookie if the requestor is Internet Explorer
if (navigator.appName.indexOf("Microsoft") != -1) {
alert("Internet Explorer browser has been identified...");
var scrollX, scrollY;
var strA = "KulScrollPos=";
var strB = ",";
var strC = "; path=";
// Depending on the version of Internet Explorer --- call the appropriate API
if (!document.documentElement.scrollLeft)
scrollX = document.body.scrollLeft;
else
scrollX = document.documentElement.scrollLeft;
if (!document.documentElement.scrollTop)
scrollY = document.body.scrollTop;
else
scrollY = document.documentElement.scrollTop;
alert("scrollX = " + scrollX + " and " + "scrollY = " + scrollY);
alert("strA = " + strA);
//document.cookie = "KulScrollPos="+scrollX+","+scrollY+"; path="+document.location.pathname;
document.cookie = strA.concat(scrollX, strB, scrollY, strC, document.location.pathname);
}
// Save the cookie for all other major browsers
else {
document.cookie = "KulScrollPos="+f_scrollLeft()+","+f_scrollTop()+"; path="+document.location.pathname;
}
alert("cookie = " + document.cookie)
}
function restoreScrollPosition() {
alert("Entered the restore method...");
cookieName = "KulScrollPos";
if (document.title == "KFS :: Create Purchase Log") {
resetScrollPosition();
expireCookie(cookieName);
return true;
}
else {
var matchResult = document.cookie.match(new RegExp(cookieName+"=([^;]+);?"));
if (matchResult) {
var coords = matchResult[1].split(',');
if (coords[1] != 0) {
alert("Restoring the scroll position before scrollTo... " + coords[0] + " and " + coords[1]);
window.scrollTo(coords[0],coords[1]);
parent.window.scrollTo(coords[0],coords[1]);
}
expireCookie(cookieName);
return true;
}
else {
return false;
}
}
공지 사항 나는 쿠키 이름을 인쇄하고 내 경고 상자.
파이어 폭스가 인쇄 다음
cookie = KulScrollPos=0,1946; kualiSessionId=A7807919-4719-D5B4-91D6-9CC04EEA1BA8;JSESSIONID=1F155C7FC23C48A4DAF557CA4B92D2CB
Internet Explorer는 다음과 같은 인쇄 :
이cookie = kualiSessionId=072BE31C-6AF5-6D4C-11A4-55E799790C6A; JSESSIONID=76D83E8E7EBA5F25B8A1B1990B9344E8
공지 사항을 문자열이 KulScrollPos = 0,1946을; 이 쿠키 이름에서 제외됩니다. 이것은 Internet Explorer에서만 발생합니다!
*** 나는 document.cookie = ...를 설정하고있는 문자열 변수 (주석 처리 된 행)를 설정하는 또 다른 방법을 시도했습니다.이 행은 위에 표시된 것과 동일한 경고 출력도 생성했습니다.
내 RestoreScrollPosition에서 ELSE 블록을 확인하십시오. if (matchResult) 조건은 항상 이로 인해 실패합니다. 왜냐하면 내 scrollTo 메소드를 호출 한 곳에서 내 코드가 호출되지 않습니다!
나는 문자열을 잘못 연결 했습니까? IE가 IE를 좋아하지 않는 이유는 무엇입니까?
정말 이상한 행동입니다.
이것은 매우 기민한 관찰입니다. 나는 그것을 시도해보고 그것이 어떻게 작동했는지 알려줄 것입니다 ... –
그건 그 일을하지 않았습니다. :( –