JavaScriptã ãã§ãã©ã¦ã¶ã®ãæ»ãããã¿ã³ãç¡å¹åããæ¹æ³
ãã®ããã è«¸äºæ ã§èª¿ã¹ãããæå¤ã¨ã¾ã¨ã¾ã£ã¦ãã¨ããªãã£ããªã®ã§ã¡ããã£ã¨æ¸ãã¦ã¿ã¾ãã
- IE8以éã対象
- ãã©ã¦ã¶ã®ãæ»ãããã¿ã³ã§ä»ã®ãã¼ã¸ã«é·ç§»ããªã
- Backspaceãã¼ã§ã®ãæ»ããã許å¯ããªã
ã¿ãããªæ¹éã§èª¿ã¹ã¦ã¿ã¾ããã
ã¾ãçµè«ããè¨ãã¨
Ah, the back button. You might imagine "back" fires a JavaScript event which you could simply cancel like so:
document.onHistoryGo = function() { return false; }
No so. There simply is no such event.
ã¨ããããã§ããã©ã¦ã¶ã®æ»ããã¿ã³ããæè»½ã«ç¡å¹ã«ããæ¹æ³ã¯ãªãããã§ããã
æ¹æ³
1.window.onunload
ã¤ãã³ããå©ç¨ãã
ã¾ãç´æ¥çãªã¤ãã³ããç¡ããªãä¼¼ããããªã¤ãã³ãããããã«ä½¿ããï¼ã¿ãããªå®ç´ãªçºæ³ã§ã
ãã¼ã¸ããé¢ããéã«çºçããonunload
ã¤ãã³ããããªã¬ã¼ã¨ãã¦ã次ã«è¡¨ç¤ºããããã¼ã¸ï¼é·ç§»å
ï¼ãç¾å¨ã®ãã¼ã¸ã«ãã¦ãã¾ã颿°ãå®è¡ããæ¹æ³ã
window.onunload = function() { alert('Back buttom is pushed ??'); location.replace(document.location); };
onunload
ã¯æ»ããã¿ã³ä»¥å¤ã§ãçºçããã®ãBackspaceãã¼ãURLã®ç´æ¥å
¥åãå±¥æ´ããã®é·ç§»ã§ãããªã³ã¯ãã¯ãªãã¯ããã¨ããå½ç¶çºçããããã®çµæããã®ã³ã¼ãããããã¼ã¸ããã¯ç§»åã§ããªããªãã¨ããä»çµã¿ã
対象ããæ»ãããã¿ã³ã®åä½ã ãã«çµããã¨ãã§ããªãã®ã§ããã®æ¹æ³ã¯ã¡ãã£ã¨å³ãããã
以ä¸ã®ããã«ãé©å½ãªã¿ã¤ãã³ã°ã§ã¤ãã³ããã³ãã©ãåé¤ãããã¨ã§ç§»åã§ããããã«ãããã¨ãã§ããªãã¯ãªããã©ãéç¶ã¨ããªãã
<script type="text/javascript"> function goNextPage() { window.onunload = null; }; </script> <a href="./Page3.html" onclick=" goNextPage(); ">Go Next</a>
ã¨ãããIE11ã§ã¯location.replace()
ã§ã©ã³ã¿ã¤ã ã¨ã©ã¼ã«ãªã£ã¦åããªããã ããªâ¦ï¼ã ãããã
åèï¼ãã©ã¦ã¶ã®æ»ããã¿ã³ãç¡å¹ã«ããæ¹æ³: ãã SE ã®ã¤ã¶ãã
2.history.forward()
颿°ã使ã
æ¤ç´¢ããã¨ããè¦ã¤ããæ¹æ³ãé·ç§»å ã®ãã¼ã¸ã« 以ä¸ã®JSãè¨è¿°ãã¦ããã
window.onunload = function() {}; history.forward();
ä¸ã®ã³ã¼ããheadè¦ç´ 辺ãã«æ¸ãã¦ãããã¼ã¸Aãããã¼ã¸Bã¸é·ç§»ããã®å¾Bãããæ»ãããã¿ã³ã§Aã¸æ»ãã¨ãhistory.foward()颿°ã§Bã¸éãè¿ããã¾ãããªã®ã§ãBackspaceãã¼ä½¿ããã¦ãå¹³æ°ã
ãã ãå±¥æ´ã®ä¸ã¤åãAã®ã¨ãã¯Bããã ãã§ãªãã©ã®ãã¼ã¸ãããæ»ããªããã¨ã«ãªãã®ã§ãç¹å®ã®ãã¼ã¸ã ããæ»ãããã¿ã³ã使ç¨ä¸å¯ã«ãããï¼ã¿ãããªç¶æ³ã§ã¯ä½¿ããªãã
éã«ãã®ãã¼ã¸ã ãã«ã¯æ»ã£ã¦ãã¦ã»ãããªããã£ã¦ããã¨ãã¯ããããã¯ä½¿ããï¼
3.window.location.hash
ã使ã
URLã«hashï¼URLã®å¾ãã«ãã£ã¤ã#HogeHoge
ã¿ãããªæååã§ããã¼ã¸å
ãªã³ã¯ãªããã«ä½¿ããã¦ãï¼ãã¤ãããã¨ã§å¥ãã¼ã¸ã¸ã®é·ç§»ã¨ãã¦å±¥æ´ã«æ®ãã¦ãä»ã®ãã¼ã¸ã«æ»ããªããã¦ãã¾ãæ¹æ³ã
window.location.hash="no-back"; window.location.hash="no-back-button"; window.onhashchange=function(){ window.location.hash="no-back"; }
ãã¼ã¸ãèªã¿è¾¼ã¾ããã¿ã¤ãã³ã°ã§URLã®æ«å°¾ã«#no-back
ããããã¯#no-back-button
ã追å ããåæã«hashã夿´ãããã¨çºçããonhashchange
ã§hashã夿´ãã颿°ã追å ããã
ãã¼ã¸ã«é·ç§»ãã¦ããæç¹ã§ãå±¥æ´ã®ä¸ã¤åã®ãã¼ã¸ãèªåèªèº«ã«ãªã£ã¦ãããããæ»ããã¿ã³ãæ¼ãã¦ãèªåã«æ»ãã ãã«ãªãã¨ãã寸æ³ã
URLã«ä½è¨ãªæååãå«ã¾ãã¦ãã¾ãã®ãå«ãã人ããã¾ãããå ã«æããæ¹æ³ããã ãã¶å®å®ãã¦ããå°è±¡ã§ããã
åèï¼javascript - How to Detect Browser Back Button event - Cross Browser - Stack Overflow
4. history.go()
ã使ãï¼ï¼ï¼
+JavaScript+ãã©ã¦ã¶ã®æ»ããã¿ã³ã®ç¡å¹å - Free Flying
ããããæ¹æ³ãããã¿ããã ãã©ããªãã§history.go()
ã§ãæ»ããã使ããªããªãã®ãã¤ãã¤ãåãããªãã£ããã§è©¦ãã®ãããã¾ããã
åèï¼go method (Internet Explorer)
5. HTML5ã® History API ãå©ç¨ãã
ä»ååãå½ãã£ãè¦ä»¶ã§ã¯é£ãããã©ãHTML5ãå©ç¨ã§ããIE10以éã§ã¯ä»¥ä¸ã®æ¹æ³ã使ãã°ãæ¦ããããããåãã¾ãã
ãæ»ãããç¦æ¢ããããã¼ã¸ã«ä»¥ä¸ã®JSãæ¸ãã
<script type="text/javascript"> history.pushState(null, null, null); window.addEventListener("popstate", function() { history.pushState(null, null, null); }); </script>
ãã¼ã¸ãèªã¿è¾¼ã¾ãããhistory.pushState()
ã¡ã½ããã§å±¥æ´ã®å
é ã«æ°ããå±¥æ´ãã²ã¨ã¤è¿½å ãããããã®ã¨ã第3弿°ãnull
ãªã®ã§ã追å ãããå±¥æ´ã¯èªåèªèº«ãæãã¦ãããã¨ã«ãªããç¶ãã¦popstate
ã¤ãã³ãã®ãã³ãã©ã¨ãã¦history.pushState()
ãå®è¡ãã颿°ãæå®ããã
ãæ»ãããã¿ã³ãæ¼ãããã¨popstate
ããã¤ãã³ããã³ãã©ãå®è¡ãããèªåèªèº«ãæãå±¥æ´ï¼history.pushState(null, null, null)
ï¼ãããä¸ã¤è¿½å ãããã
ãã¼ã¸èªã¿è¾¼ã¿æã«å®è¡ãããhistory.pushState()
ã§ã¯ãæåã«ãæ»ãããå®è¡ãããã¨ãã«æ»ãå
ã®å±¥æ´ã追å ããã2åç®ä»¥éã®ãæ»ããå®è¡æã¯ã¤ãã³ããã³ãã©ã§è¿½å ãããå±¥æ´ã使ç¨ããããã¯ãã
æ»ãå
ã¯å¸¸ã«èªåèªèº«ã«ãªããããçµæã¨ãã¦ãæ»ãããã¿ã³ãç¡å¹åã§ãã¾ããå
ã«æ¸ããlocation.hash
ã«è¿ããã®ã§ãå®éãªãã¡ã¬ã³ã¹ã«ã¯
ããæå³ã§ã¯ãpushState() ã®å¼ã³åºã㯠window.location = "#foo"; ã¨è¨å®ããã®ã¨ä¼¼ã¦ãã¾ããã©ã¡ãããç¾å¨ã®ããã¥ã¡ã³ãã«é¢é£ããå¥ã®å±¥æ´ã¨ã³ããªã®çæã¨ã¢ã¯ãã£ãã¼ããè¡ãã¾ãã
Manipulating the browser history - Web developer guide | MDN
ã¨ããã®ã§ãHTML5ã使ãããªãhistory.pushState()
ããã¡ãªãlocation.hash
ã使ãã¨ããã®ããããæå³æ£æ»æ³ãªã®ããã
ã¾ããå種ã¤ãã³ãã®çºç«æ¡ä»¶ã¨ãã«éããããã®ã§ãããèãã¦ä½¿ãå¿ è¦ãããã®ã¯è¨ãã¾ã§ããªãã®ã§ããã
åèï¼
- PGã«ãªã£ãããæ¸ã pushStateã使ç¨ããæ»ããã¿ã³ã®ç¡å¹å
- History - Web API ã¤ã³ã¿ã¼ãã§ã¤ã¹ | MDN
- å±¥æ´ (Windows)
ãããã«
ããããã¦ä½¿ããããªã£ã¦è¨ãã®ãlocation.hash
ãä½¿ãæ¹æ³ã§ããããã
ã¨ãããããããã§ãããç¹ã«ã¬ã¬ã·ã¼ãªæãã®ãã©ã¦ã¶ã§ããæ»ãããã¿ã³ã®ç¡å¹åãããJavaScriptã ãã§ã§ãããã§ããï¼ã¡ãã¡ãã£ã¨ãã£ã¡ãã£ã¦ï¼ã¨ãããï¼åé ã®å¼ç¨ã®ãããªï¼å®ç´ãªèãã¯æ¨ã¦ãã¹ããªã®ã§ã¯ã¨ãæããã«ã¯ããããªãã¨æã£ããæããªãã£ããã