var fromHistoryBack = false;
var myHistory;
try {
myHistory = JSON.parse(sessionStorage.getItem('myHistory'));
} catch (e) {};
if (myHistory) {
if (myHistory[myHistory.length-1].href == window.location.href
&& myHistory[myHistory.length-1].referrer == document.referrer) {
alert('새로고침 되었습니다.');
} else {
if (myHistory.length > 1) {
if (myHistory[myHistory.length-2].href == window.location.href
&& myHistory[myHistory.length-2].referrer == document.referrer) {
fromHistoryBack = true;
myHistory.pop();
sessionStorage.setItem('myHistory', JSON.stringify(myHistory));
}
}
if (myHistory.length > 10 && !fromHistoryBack) {
myHistory.shift();
sessionStorage.setItem('myHistory', JSON.stringify(myHistory));
}
if (!fromHistoryBack) {
myHistory.push({
href: window.location.href,
referrer: document.referrer
});
sessionStorage.setItem('myHistory', JSON.stringify(myHistory));
}
}
} else {
var newHistory = [{
href: window.location.href,
referrer: document.referrer
}];
sessionStorage.setItem('myHistory', JSON.stringify(newHistory));
}
console.debug('fromHistoryBack:', fromHistoryBack);
history를 쿠키나 브라우저 스토리지에 별도로 축적하고 이를 비교해가며 뒤로가기 기능으로 랜딩된 페이지인지를 판단하는 소스. 단, 반드시 뒤로가기만 걸러내는것은 아니고 이전 페이지의 주소를 직접 호출하는 방식에도 반응하는 한계가 있다.
'Client Standard > JavaScript & jQuery' 카테고리의 다른 글
[jQuery] JSON 으로 Highcharts 구현 (0) | 2018.05.15 |
---|---|
[JSON] json-groupby 관련 (0) | 2017.06.23 |
[ IE ]지금 보고 있는 웹페이지를 닫을지를 묻는 창이 안뜨도록 하는 소스 (0) | 2016.04.06 |
[SNS] 확산 페이스북 이전 확산 캐시지우기 (0) | 2016.03.27 |
[jquery] text 입력시 옆 text 자동입력 (0) | 2016.02.18 |