ã¹ã¯ããŒã«ã¯ãWebäžã§æãå€ãçžäºäœçšã®1ã€ã§ãã ãã«ãã¥ãªãã¬ãã·ã¥ã¡ãœãããšç¡éã®ããŠã³ããŒããªã¹ããç»å Žãããã£ãšåã«ãæ§ãããªã¹ã¯ããŒã«ããŒãWebäžã®ã¹ã±ãŒãªã³ã°ã®å ã®åé¡ã解決ããŸãããå©çšå¯èœãªè¡šç€ºé åãè¶ ããã³ã³ãã³ããšå¯Ÿè©±ããæ¹æ³ã§ããã
ä»æ¥ãã¹ã¯ããŒã«ã¯äŸç¶ãšããŠWebäžã§æãåºæ¬çãªçžäºäœçšã§ãããããããæã誀解ãããŠããŸãã ããšãã°ã次ã®ã·ããªãªã®éããç¥ã£ãŠããŸããïŒ
- ãŠãŒã¶ãŒã¯ãã¿ãããããäžã§2æ¬ã®æã§ããŒãžãã¹ã¯ããŒã«ããŸãã
- ãŠãŒã¶ãŒã¯ãã¿ããã¹ã¯ãªãŒã³äžã§1æ¬ã®æã§ã¹ã¯ããŒã«ããŸãã
- ãŠãŒã¶ãŒãããŠã¹ãã€ãŒã«ãã¹ã¯ããŒã«ããŸãã
- ãŠãŒã¶ãŒã¯ã¹ã¯ããŒã«ããŒãã¯ãªãã¯ããŠäžäžã«ãã©ãã°ããŸã
- ãŠãŒã¶ãŒãããŒããŒãã®äžãäžãPageUpãPageDownãããã³ã¹ããŒã¹ããŒã®ç¢å°ãæŒã
å¹³åçãªã€ã³ã¿ãŒããããŠãŒã¶ãŒïŒãŸãã¯å¹³åçãªWebéçºè ãïŒã«å°ãããšããããã®ã¢ã¯ã·ã§ã³ã¯åçã§ããããšãããããŸãã çå®ã¯ã¯ããã«èå³æ·±ãã§ãã
çµå±ã®ãšãããããã5ã€ã®å ¥åã¡ãœããã¯ãç¹ã«ããã©ãŒãã³ã¹ãšãã©ãŠã¶ãŒéã®äºææ§ã®ç¹ã§éåžžã«ç°ãªãç¹æ§ãæã£ãŠããŸãã ãããã®äžéšïŒã¿ããã¹ã¯ãªãŒã³ã®ã¹ã¯ããŒã«ãªã©ïŒã¯ãéãJavaScriptã䜿çšããŠããããŒãžã§ãããããã¹ã ãŒãºã§ãããä»ã®ããŒããŒãïŒããŒããŒãããã®ã¹ã¯ããŒã«ãªã©ïŒããã¯åãããŒãžãé ããŠå¿çããªããªããŸãã ããã«ãããçš®ã®ã¹ã¯ããŒã«ã¯DOMã€ãã³ããã³ãã©ãŒã«ãã£ãŠé ãããããšãã§ããŸãããä»ã®çš®é¡ã¯ã§ããŸããã ããã§äœãèµ·ãã£ãŠããŸããïŒ
ãã®è³ªåã«çãããµã€ãã«æãã¹ã ãŒãºãªã¹ã¯ããŒã«ãå®è£ ããæ¹æ³ãç解ããããã«ããã©ãŠã¶ããã«ãã¹ã¬ãããšå ¥åãã©ã®ããã«åŠçããããç解ãç解ããããã«æ»ã£ãŠã¿ãŸãããã
ãã«ãã¹ã¬ããWeb
æŠå¿µçã«ã¯ãWebã¯ã·ã³ã°ã«ã¹ã¬ããç°å¢ã§ãã JavaScriptã¯DOMããããã¯ããDOMã¯JavaScriptããããã¯ããŸããããã¯ãäž¡æ¹ãåãã¹ã¬ããïŒå€ãã®å Žåãã¡ã€ã³ã¹ã¬ããããŸãã¯ãUIã¹ã¬ããããšåŒã°ããïŒãäºãããã§ãã
ããšãã°ããã®ïŒã²ã©ãïŒJavaScriptã¹ãããããããŒãžã«è¿œå ãããšãããã©ãŒãã³ã¹ã®äœäžãããã«ããããŸãã
setInterval(() => { var start = Date.now(); while (Date.now() - start < 500) {/* wheeeee! */} }, 1000);
ãã®JavaScriptãç¡éã«ãŒãã§å転ããŠããéããã¿ã³ã¯æ©èœããããã©ãŒã èŠçŽ ã¯å¿çãããã¢ãã¡ãŒã·ã§ã³GIFã§ããé ããªããŸããããããæå³ã§ãããŒãžãããªãŒãºããŸãã ã·ã³ãã«ãªãã¢ã§å®éã®å¹æã調ã¹ãããšãã§ããŸãã
ããã«ãããŒããŒãã®äžäžããŒã䜿çšããŠããŒãžãã¹ã¯ããŒã«ããããšãããšãJavaScriptã®å®è¡ãåæ¢ãããŸã§ããŒãžãäºæž¬ã©ããã«ã¹ã¿ãã¯ããŸãã ããã¯ãã¹ãŠãWebãã·ã³ã°ã«ã¹ã¬ããç°å¢ãšèŠãªããŠãããšããæ確ãªèšŒæ ã§ãã
é¢çœãå€åããããŸãïŒã¿ããã¹ã¯ãªãŒã³ãã¹ã¯ããŒã«ããããšãããšãJavaScriptã¯ããŒãžäžã®ä»ã®ãã¹ãŠããããã¯ããŸãããããŒãžã¯å®å šã«äžäžã«ã¹ã¯ããŒã«ããŸãã åãããšã¯ãã¿ããããããããŠã¹ãã€ãŒã«ããã®ã¹ã¯ããŒã«ãããã³ã¯ãªãã¯ã¢ã³ããã©ãã°ã«ãŒãœã«ã§ããŒãžããã£ããã£ããåŸã®ã¹ã¯ããŒã«ïŒãã©ãŠã¶ãŒã«ãã£ãŠç°ãªããŸãïŒã«ãåœãŠã¯ãŸããŸãã
ã©ãããããããäžéšã®ã¹ã¯ããŒã«ã¢ã¯ã·ã§ã³ã¯ããŒãžã®ç¶æ ãå€æŽã§ããŸãããä»ã®ãã¹ãŠïŒãã¿ã³ãããŒã¿å ¥åãã£ãŒã«ããGIFïŒã¯å®å šã«ããªãŒãºããŸãã ãããã·ã³ã°ã«ã¹ã¬ããWebçè«ãšã©ã®ããã«çµã¿åãããããšãã§ããŸããïŒ
2ã€ã®ã¹ã¬ããã®å±¥æŽ
çµå±ã®ãšãããäžè¬ã«ãããã©ãŠã¶ãŒã¯ã·ã³ã°ã«ã¹ã¬ããããšããè«æã¯æ£ããã®ã§ãããéèŠãªäŸå€ããããŸãã ã¹ã¯ããŒã«ã¯ããã®å€æ§æ§ãã¹ãŠã«ãããŠããã®ãããªäŸå€ã®1ã€ã§ãã
é·å¹Žã«ãããããã©ãŠã¶éçºè ã¯ãè£å©çãªäœæ¥ãããã¯ã°ã©ãŠã³ãã¹ã¬ããã«ã¢ã³ããŒããããšãã¹ã ãŒãºãªæäœãšæ床ã«å€§ããªã¡ãªãããããããããããšã«æ°ä»ããŸããã ã¹ã¯ããŒã«ã¯äž»èŠãªãã©ãŠã¶ãšã¯ã¹ããªãšã³ã¹ã«ãšã£ãŠéåžžã«éèŠã§ããããããã®ã¿ã¹ã¯ã¯ãã®ãããªæé©åã®ããã«ããã«éžæãããŸããã çŸåšããã¹ãŠã®äž»èŠãªãã©ãŠã¶ãŒãšã³ãžã³ïŒBlinkãEdgeHTMLãGeckoãWebKitïŒã¯ãå®è¡ã®ã¡ã€ã³ã¹ã¬ããã®å€åŽã§ã®ã¹ã¯ããŒã«ãããçšåºŠãµããŒãããŠããŸãïŒFirefoxã¯ã FirefoxããŒãžã§ã³46ããã¯ã©ãã«åå ããæåŸã®äººã§ãïŒã
ããã¯ã°ã©ãŠã³ãã¹ã¯ããŒã«ã§ã¯ããã¹ãŠã®ã¹ã¯ããŒã«ãåå¥ã®ã¹ã¬ããã§å®è¡ããããããããŒãžãä¹±éã«ãªã£ãŠãã¹ã ãŒãºã«ã¹ã¯ããŒã«ããŸãã ã¹ã¯ããŒã«ã«é¢ä¿ã®ãªãå€éšã¡ã«ããºã ãä»ããŠããŒãžãšå¯Ÿè©±ããããšããå Žåã®ã¿-ããŒãæŒããå ¥åãã£ãŒã«ãã«ããŒã¿ãå ¥åãããªã³ã¯ãã¯ãªãã¯ããŸã-ãã¡ãµãŒãããªã»ããããããµãã³ããªãã¯ã®æ¬è³ªãå®å šã«æããã«ãªããŸãã ïŒããŸããããšããã°ãããã¯çŽ æŽãããããªãã¯ã§ãïŒïŒ
確ãã«ãéåæã¹ã¯ããŒã«ã«ã¯ããã§ãã«ãŒããŒãå¹æãšåŒã°ããäžè¬çãªå¯äœçšããããŸãã iOSçšã®Safariã§æåã«ç»å Žããã®ã¯ããã§ã¹ç€ã®ããã«ç°è²ãšçœè²ã®ã»ã«ã®åœ¢ã§ããã ææ°ã®ãã©ãŠã¶ã®ã»ãšãã©ã§ã¯ããã©ãŠã¶ãããŒãžãã¬ã³ããªã³ã°ã§ããé床ãããéãã¹ã¯ããŒã«ãããšãç»é¢äžã®ç©ºçœã¹ããŒã¹ãšããŠå¹æãçŸããŸãã ããã¯çæ³çã§ã¯ãããŸãããããããã¯ããããããããããããŸãã¯å¿çããªãã¹ã¯ããŒã«ãšæ¯èŒããŠèš±å®¹ã§ãã劥åã§ãã
æ®å¿µãªãããã¹ã¯ããŒã«ãå®è¡ã®ããã¯ã°ã©ãŠã³ãã¹ã¬ããã«è»¢éããããšã¯å¿ ããã容æã§ã¯ãããŸããã ãã©ãŠã¶ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãåæå ¥åãèš±å¯ããŠããå Žåã«ã®ã¿ãããè¡ãããšãã§ããããã¯ããã€ã¹ããšã«ç°ãªãå ŽåããããŸãã ç¹ã«ãããŒããŒãå ¥åã¯ããŠã¹ãã¿ããããã€ã¹ã®å ¥åã»ã©æé©åãããŠããªãããããã¹ãŠã®ãã©ãŠã¶ã§ããŒããŒãããå ¥åããå Žåãæçµçã«ã¯å€§å¹ ãªé 延ãçºçããŸãã
ããã§ã¯ãå°ã話ãæçã§ãã WindowsãmacOSãªã©ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãæåã«ç»å Žãããšããå®è¡ã¹ã¬ããã¯1ã€ããèš±å¯ãããŠããããåæå ¥åãæäŸããå¿ èŠæ§ãã»ãšãã©äºèŠããŠããŸããã§ããã ãã«ãã³ã¢ãã·ã³ãç»å ŽããŠåããŠããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãã¢ãŒããã¯ãã£ã«äžŠåæ§ãçµã¿èŸŒã¿å§ããŸããã
åç©ã®åæ©çãªåšå®ãé²åã®æŽå²ãç解ã§ããããã«ããŠã§ãäžã§ã¹ã¯ããŒã«ããæ¹æ³ãèŠããšããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®åäžã¹ã¬ããã®èµ·æºãçŸããŸãã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããããŠã¹ãããŒããŒãããŸãã¯ä»ã®ããã€ã¹ããã®äžŠåå ¥åãèš±å¯ããŠããå Žåã«ã®ã¿ããã©ãŠã¶ã¯ãå®è¡ã®ã¡ã€ã³ã¹ã¬ãããæ··ä¹±ãããJavaScriptã®é·æéã®å®è¡ã«åœ±é¿ãããªãããã«ã¹ã¯ããŒã«ãå¹æçã«æé©åã§ããŸãã
ãã ããMicrosoft EdgeéçºããŒã ã§ã¯ããã®æ¹æ³ã«é¢ä¿ãªããã¹ã ãŒãºã§å¿çæ§ã®é«ãã¹ã¯ããŒã«ãä¿èšŒããããã«åé²ããŠããŸãã EdgeHTML 14ïŒWindows 10 Anniversary Updateã«å«ãŸããŠããïŒã§ã¯ã次ã®ã¡ãœããã®ããã¯ã°ã©ãŠã³ãã¹ã¯ããŒã«ããµããŒãããŠããŸãã
- 1æ¬æã®ã¿ããã¹ã¯ãªãŒã³
- 2æ¬ã®æãã¿ããããã
- ããŠã¹ãã€ãŒã«
- ã¹ã¯ããŒã«ããŒ
Edgeãä»ã®ãã¹ã¯ããããã©ãŠã¶ãŒãšæ¯èŒãããšãã¹ã¯ããŒã«ããŒã䜿çšããéåæã¹ã¯ããŒã«ãã€ãŸããããŠã¹ã§ã¹ã¯ããŒã«ããŒãæŒãããŸãŸç§»åããã¹ã¯ããŒã«ããŒãŸãã¯ç¢å°ãã¯ãªãã¯ããã ãããµããŒããããŠããããšãããããŸãã ïŒå®éãçºè¡šãªãã§ããã®æ©èœãAnniversary Updateã§å°å ¥ããŸããïŒïŒ
Windows 10ïŒ14393ãSurface BookïŒããã³macOS SierraïŒ10.12ãMacBook AirïŒã®ãã¹ãçµæã«ãããšã次ã®çµæãåŸãããŸããã
2æ¬æã¿ããããã | ã¿ãã | ããŠã¹ãã€ãŒã« | ã¹ã¯ããŒã«ã㌠| ããŒããŒã | |
---|---|---|---|---|---|
ãšããž14ïŒWindowsïŒ | ãããŸã | ãããŸã | ãããŸã | ãããŸã | ãã |
Chrome 56ïŒWindowsïŒ | ãããŸã | ãããŸã | ãããŸã | ãã | ãã |
Firefox 51ïŒWindowsïŒ | ãã | ãã | ãã | ãã | ãã |
Chrome 56ïŒMacOSïŒ | ãããŸã | N / a | ãããŸã | ãã | ãã |
Firefox 51ïŒmacOSïŒ | ãããŸã | N / a | ãããŸã | ãã | ãã |
Safari 10.1ïŒMacOSïŒ | ãããŸã | N / a | ãããŸã | ãã | ãã |
ãã®è¡šã*ã瀺ããŠããããã«ãã¹ã¯ããŒã«ã®åäœã¯ãã©ãŠã¶ãŒããšã«ãããã«ã¯OSããšã«åçã«å€åããŸãã 1ã€ã®ãã©ãŠã¶ã®ã¿ã§1ã€ã®ã¹ã¯ããŒã«æ¹æ³ããã¹ããããšããŠãŒã¶ãŒãå®éã«æäœããæ¹æ³ãšæ¯èŒããŠããµã€ãã®ããã©ãŒãã³ã¹ã®çµæãéåžžã«äžå®å šã«ãªããŸãã
äžè¬ã«ãã¹ã¯ããŒã«ã¯Webäžã§ç¹å¥ãªå Žæã«ããããã©ãŠã¶ãéåžžã«äžçæžåœã«åäœããŠãé«éã§åãå ¥ããããããšã¯æããã§ãã ãã ããWebéçºè ããã©ãŠã¶ããŒã¹ã®æé©åã誀ã£ãŠç¡å¹ã«ã§ãã埮åŠãªæ¹æ³ããããŸãã Webéçºè ããã©ãŠã¶ã®ã¹ã¯ããŒã«ã«è¯ãæ¹æ³ãšæªãæ¹æ³ã§åœ±é¿ãäžããæ¹æ³ãèŠãŠã¿ãŸãããã
ãªã¹ãã³ã°ããã»ã¹ãã¹ã¯ããŒã«ã劚ããæ¹æ³
ããã¯ã°ã©ãŠã³ãã¹ã¯ããŒã«ã«ãããå¹çãå€§å¹ ã«åäžããŸããã¹ã¯ããŒã«ãšJavaScriptã¯å®å šã«åé¢ãããŠãããããäºãã«å¹²æžããããšãªã䞊è¡ããŠåäœã§ããŸãã
ããããWebããŒãžãå°ãèšèšãã人ã¯èª°ã§ããJavaScriptãšã¹ã¯ããŒã«ãæ¥ç¶ããæ¹æ³ãç¥ã£ãŠããŸãã
window.addEventListener(âwheelâ, function (e) { e.preventDefault(); // oh no you don't! });
event.preventDefault()
ãåŒã³åºããã€ãŒã«ãªã¹ãã³ã°ããã»ã¹ãè¿œå ãããšãããŠã¹ãã€ãŒã«ãšã¿ãããããã®äž¡æ¹ã®ã¹ã¯ããŒã«ã100ïŒ ãããã¯ãããŸãã ãããŠæããã«ãã¹ã¯ããŒã«ããããã¯ããããšãããã¯ã°ã©ãŠã³ãã®ã¹ã¯ããŒã«ããããã¯ãããŸãã
ãã®ãããªäŸã®å¹æã¯ããã»ã©æçœã§ã¯ãããŸããïŒ
window.addEventListener(âwheelâ, function (e) { console.log('wheel!'); // innocent listener, not calling preventDefault() });
é¢æ°ã
preventDefault()
åŒã³åºããªãå Žåãã¹ã¯ããŒã«ããŸã£ãããããã¯ã§ããªãããææªã®å Žåã¯é¢æ°èªäœã®æéã ãã¹ã¯ããŒã«ããããã¯ã§ããªããš
preventDefault()
èãããããããŸããã ãã ããå®éã«ã¯ã空ã®ãªã¹ãã³ã°ããã»ã¹ã§ããããã®ããŒãžã®ãã¹ãŠã®JavaScriptããã»ã¹ãå®äºãããŸã§ã¹ã¯ããŒã«ãå®å šã«ãããã¯ããŸãã ããã¯ã ãã®ãã¢ã§ç¢ºèªã§ããŸãã
ããŠã¹ãã€ãŒã«ããªãã¹ã³ããããšã¯ã倧ããªããããã³ã°JavaScriptæäœãšçžäºäœçšããŸããããå ±éã®ã€ãã³ãã«ãŒãããããããããã¯ã°ã©ãŠã³ãã¹ã¬ããã¯ãããé·ãJavaScriptæäœãå®äºãããŸã§åŸ æ©ããŠãããã€ãã³ããªã¹ããŒããå¿çãåãåããŸãã
ãªã圌ã¯åŸ ã€å¿ èŠããããŸããïŒ JavaScriptã¯åçãªããã°ã©ãã³ã°èšèªã§ããããã©ãŠã¶ãŒã¯
preventDefault()
ãåŒã³åºãããªãããšã確信ã§ããŸããã é¢æ°ãåã«
console.log()
æžã蟌ãã§ããããšãéçºè ã«æããã§ãã£ãŠãããã©ãŠã¶éçºè ã¯ãã£ã³ã¹ãæ®ããªãããšã奜ã¿ãŸãã å®éã空ã®
function() {}
ã§ãåãçµæã«ãªããŸãã
ããã¯ããŠã¹ãã€ãŒã«ã ãã§ãªããã¿ããããã€ã¹ã§ã¯ã touchstartãŸãã¯touchmoveãªã¹ãã³ã°ããã»ã¹ã«ãã£ãŠã¹ã¯ããŒã«ããããã¯ããããšãã§ããŸãã
ããŒãžã«ãªã¹ããŒã€ãã³ããè¿œå ãããšãã¯ãããã©ãŒãã³ã¹ã«åœ±é¿ãããã泚æãå¿ èŠã§ãã
ã¹ã¯ããŒã«JavaScript APIã¯ããã€ããããŸãããã¹ã¯ããŒã«ã¯ãããã¯ãããŸããã ã¹ã¯ããŒã«ã€ãã³ãã¯å€å°éè«ççã§ãããã¹ã¯ããŒã«åŸã«ãããã¯ãããªããããã¹ã¯ããŒã«åŸã«èµ·åãã ããã£ã³ã»ã«ãããŸããã ãŸããIEãšMicrosoft Edgeã§å°å ¥ãããæè¿ChromeãšFirefoxã§å°å ¥ãããæ°ããPointer Events API㯠ãå ã ãã¹ã¯ããŒã«ã誀ã£ãŠãããã¯ããªãããã«èšèšãããŸããã
wheelãŸãã¯touchstartã€ãã³ãããªãã¹ã³ããå¿ èŠãããå Žåã§ããWebéçºè ãã¹ã¯ããŒã«ãæé«å質ã§æ©èœããããšãä¿èšŒããæ¹æ³ã«ã¯ãããã€ãã®ç§trickããããŸãã ãããã®ããªãã¯ã®ããã€ããèŠãŠã¿ãŸãããã
ã°ããŒãã«ããã³ããŒã«ã«ã®ãªã¹ãã³ã°ããã»ã¹
åã®äŸã§ã¯ãã°ããŒãã«ãªã¹ãã³ã°ããã»ã¹ã®ã±ãŒã¹ãèŠãŸããïŒã€ãŸãã ãŠã£ã³ããŠãŸãã¯ããã¥ã¡ã³ãã«ã¢ã¿ãããããŠããŸã ïŒã ããããåã ã®ã¹ã¯ããŒã«èŠçŽ ã®ãªã¹ãã³ã°ããã»ã¹ã«ã€ããŠã¯ã©ãã§ããããã
èšãæãããšãã¹ã¯ããŒã«ã¯æ©èœããããããŒãžã«ã¯ç¬èªã®ç¬ç«ããã¹ã¯ããŒã«ãè¡ãåå¥ã®é åãããããŒãžãæ³åããŠãã ããã ãã®é åã§ã®ã¿ãªã¹ãã³ã°ããã»ã¹ãè¿œå ãããšããã©ãŠã¶ã¯ããŒãžå šäœã®ã¹ã¯ããŒã«ããããã¯ããŸããïŒ
document.getElementById('scrollableDiv') .addEventListener(âwheelâ, function (e) { // In theory, I can only block scrolling on the div itself! });
ç°¡åãªãã¢ããŒãžã§ç¢ºèªãããšãã¹ã¯ããŒã«ã®ãªã¹ãã³ã°ããã»ã¹ãç¬ç«ããã¹ã¯ããŒã«ã®divã«ããå ŽåãMicrosoft EdgeãšSafariã¯ããã¥ã¡ã³ãå šäœã®ã¹ã ãŒãºãªã¹ã¯ããŒã«ãæ®ãããšã«æ°ä»ãã§ãããã
ãã©ãŠã¶ãšãã®åäœã®è¡šã¯æ¬¡ã®ãšããã§ãã
2æ¬æã¿ããããã | ã¿ãã | ããŠã¹ãã€ãŒã« | ã¯ãªãã¯ã¢ã³ããã©ãã° | ããŒããŒã | |
---|---|---|---|---|---|
ãã¹ã¯ããããšããž14ïŒWindowsïŒ | ãããŸã | ãããŸã | ãããŸã | ãããŸã | ãã |
ãã¹ã¯ãããChrome 56ïŒWindowsïŒ | ãã | ãããŸã | ãã | ãã | ãã |
ãã¹ã¯ãããFirefox 51ïŒWindowsïŒ | ãã | ãã | ãã | ãã | ãã |
ãã¹ã¯ãããChrome 56ïŒMacOSïŒ | ãã | N / a | ãã | ãã | ãã |
ãã¹ã¯ãããFirefox 51ïŒMacOSïŒ | ãããŸã | N / a | ãããŸã | ãã | ãã |
Safari 10.1ïŒMacOSïŒ | ãããŸã | N / a | ãããŸã | ãã | ãã |
çµæã¯ããããã®ãã©ãŠã¶æ©èœã掻çšããããã«Webéçºè ãå©çšã§ããæé©åãããããšã瀺ããŠããŸãã ããã¥ã¡ã³ãå šäœã«å¯ŸããŠãã€ãŒã«/ã¿ãããªã¹ãã³ã°ããã»ã¹ã䜿çšãã代ããã«ããªã¹ãã³ã°ããã»ã¹ãããã¥ã¡ã³ãã®ç¹å®ã®ãµãã»ã¯ã·ã§ã³ã«è¿œå ããŠãããŒãžã®ä»ã®ãã¹ãŠã®éšåã§ã¹ã¯ããŒã«ãã¹ã ãŒãºã«ç¶æãããããã«ããããšããå§ãããŸãã ã€ãŸãããã€ãŒã«/ã¿ããã¹ã¿ãŒããªã¹ãã³ã°ããã»ã¹ãå¯èœãªéãæé«ã¬ãã«ã«å§ä»»ããã®ã§ã¯ãªããå¿ èŠãªèŠçŽ ã®ããã«ããããåé¢ããã®ãæåã§ãã
æ®å¿µãªããããã¹ãŠã®JavaScriptãã¬ãŒã ã¯ãŒã¯ã§ãã®æ¹æ³ãèš±å¯ãããŠããããã§ã¯ãããŸãããç¹ã«ãReactã¯ãããŒãžã®äžéšã«ã®ã¿é©çšããå Žåã§ããããã¥ã¡ã³ãå šäœã«ã°ããŒãã«ãªãªã¹ãã³ã°ããã»ã¹ãè¿œå ããåŸåããããŸãã ãã ãããã®åé¡å°çšã®ãªãŒãã³ãã±ããããããReactã®æ åœè ã¯ããã«ãªã¯ãšã¹ããåãã§åãå ¥ãããšè¿°ã¹ãŸããã ïŒ ç§ãã¡ã®ææ¡ã«éåžžã«è¿ éã«åå¿ããReactã®äººãã¡ãå°éããŸã ïŒ
ããã·ããªã¹ãã³ã°ããã»ã¹
ãã€ãŒã«/ã¿ããã¹ã¿ãŒãã®ã°ããŒãã«ãªã¹ãã³ã°ããã»ã¹ãé¿ããããšã¯è¯ãç¿æ £ã§ãããéæããããšããŠããå¹æã«ãã£ãŠã¯ãäžå¯èœãªå ŽåããããŸãã ãŸããããã€ãã®ç¹ã§ãåã«
PreventDefault()
ãåŒã³åºãå¯èœæ§ãããããããåŸ ã£ãŠããããã«ãã€ãã³ãããªãã¹ã³ããã ãã§ãã©ãŠã¶ãå šäžçãåæ¢ããã®ã¯éŠ¬é¹¿ããŠããããã«èŠããŸãã
幞ããªããšã«ãWebéçºè ããªã¹ãã³ã°ããã»ã¹ããããã·ãããšããŠæ瀺çã«ããŒã¯ããåŸ æ©ãåé¿ã§ããããã«ãªã£ããšãã«ããã©ãŠã¶ãŒã«æ°ããæ©èœã衚瀺ãããããã«ãªããŸããã
window.addEventListener(âwheelâ, function (e) { // Not calling preventDefault()! }, { passive: true } // I pinkie-swear I won't call preventDefault() );
ãã®ã¢ãããŒãã§ã¯ããã©ãŠã¶ã¯ãã€ãŒã«ãªã¹ãã³ã°ããã»ã¹ãå®å šã«ååšããªããã®ããã«ã¹ã¯ããŒã«ãåŠçããŸãã ãã®æ©èœã¯ãChromeãFirefoxãSafariã®ææ°ããŒãžã§ã³ã§æ¢ã«å©çšå¯èœã§ãããMicrosoft Edgeã®å°æ¥ã®ãªãªãŒã¹ã§ããã«å©çšå¯èœã«ãªãã¯ãã§ã ã ïŒããã·ããªã¹ãã³ã°ããã»ã¹ãèªèããªããã©ãŠã¶ãŒããµããŒãããã«ã¯ã æ©èœæ€åºã䜿çšããå¿ èŠãããããšã«æ³šæããŠãã ããïŒã
äžéšã®ã€ãã³ãïŒ touchstartãtouchmoveãå«ãïŒã§ã¯ãããŒãžã§ã³56ã®Chromeãä»å ¥ããããšã決å®ããããã©ã«ãã§ããã·ãã«ããŸãã ã ãªã¹ãã³ã°ããã»ã¹ãè¿œå ããå Žåããã©ãŠã¶éã®ãã®ããããªéãã«çæããŠãã ããïŒ
ãããã«
ãããŸã§èŠãŠããããã«ãWebã§ã®ã¹ã¯ããŒã«ã¯éåžžã«è€éãªããã»ã¹ã§ããããã¹ãŠã®ãã©ãŠã¶ãŒã¯ããã©ãŒãã³ã¹ãæ¹åããããŸããŸãªæ®µéã«ãããŸãã ããããå šäœãšããŠãWebéçºè ã«æ確ãªã¢ããã€ã¹ãæäŸã§ããŸãã
ãŸãã ãã€ãŒã«ãŸãã¯ã¿ãããªã¹ããŒããã»ã¹ãã°ããŒãã«ããã¥ã¡ã³ããŸãã¯ãŠã£ã³ããŠãªããžã§ã¯ãã«è¿œå ããã®ã§ã¯ãªããåã ã®ã¹ã¯ããŒã«ã§å°ããªèŠçŽ ã«è¿œå ããã®ãæåã§ãã ãŸããéçºè ã¯ãäºææ§ã®åé¡ãåé¿ããããã«ãå¯èœã§ããã°æ©èœæ€åºã䜿çšããŠãããã·ããªã¹ãã³ã°ããã»ã¹ã䜿çšããå¿ èŠããããŸãã ãã€ã³ã¿ãŒã€ãã³ãïŒããã«polyfillããããŸã ïŒã䜿çšãã ã¹ã¯ããŒã«ã€ãã³ãããªãã¹ã³ããããšããäžæ³šæã§ããã¯ãã¹ã¯ããŒã«ããã®ãé²ã確å®ãªæ¹æ³ã§ãã
ãã®èšäºãWebéçºè ã«åœ¹ç«ã€ãã³ããæäŸããå éšã®ãã©ãŠã¶ãäœã§ããããäžç®ã§èŠãããããšãé¡ã£ãŠããŸãã çãããªãããã©ãŠã¶ãé²åãããŠã§ããæé·ããã«ã€ããŠãã¹ã¯ããŒã«ã®ä»çµã¿ã¯ããã«è€éã§æŽç·Žããããã®ã«ãªããŸãã
Microsoft EdgeããŒã ã¯ããã®åéã§é©æ°ãç¶ããããå€ãã®ãµã€ããšãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ãªã¹ã¯ããŒã«ãæäŸããŸãã æ§ãããªã¹ã¯ããŒã«ããŒ-Webã§æãå€ããç©è°ãéžããŠããçžäºäœçšã«ã€ããŠãããèããŠã¿ãŸãããïŒ
*çµæã¯ã2017幎2æã«åãã©ãŠã¶ã®ææ°ããŒãžã§ã³ã§ååŸãããŸããã ãã以æ¥ãFirefox 52ã¯ã¹ã¯ããŒã«ã®ãµããŒããæŽæ°ããã¹ã¯ããŒã«ããŒã«ããã¹ã¯ããŒã«ãé€ããã¹ãŠã®ãã¹ãã§Edge 14ã®åäœãšäžèŽããããã«ãªããŸããã ä»ã®ãã©ãŠã¶ã§ãã¹ã¯ããŒã«ã®å®è£ ãæ¹åããããŠã§ããããéãããã圱é¿ãåãããããªãããšãé¡ã£ãŠããŸãïŒ