ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
HTML5 ¿ª·¢
Web,MobileWeb & Apps
·¶Ê¥¸Õ
°²²©ÖгÌÔÚÏß
Geolocation
¶¨Î»ºÍ¸ú×Ù
½éÉÜ
°²²©ÖгÌÔÚÏß
Geolocation¹¤×÷Ô­Àí
Geolocation API
Example
Ïà¹Ø×ÊÔ´
¡¤
¡¤
getCurrentPosition·½·¨
GeolocationÊý¾Ý
Handling Errors
PositionOptions¶ÔÏó
watchPosition()·½·¨ºÍclearWatch()·½·¨
-
-
-
-
-
¡¤
¡¤
3/42
ä¯ÀÀÆ÷Ö§³ÖÇé¿ö
°²²©ÖгÌÔÚÏß
geolocation
4/42
Geolocation ¹¤×÷Ô­Àí
ʶ±ðµØÀíλÖõÄÖ÷Òª·½·¨:
°²²©ÖгÌÔÚÏß
ͨ¹ýIPµØÖ·
ÀûÓûùÕ¾»ñÈ¡ÊÖ»úÍøÂçµÄ½ÓÈëλÖÃ
ͨ¹ýÀûÓÃÎÀÐǶ¨Î»»ñµÃ¾­Î³¶ÈÐÅÏ¢µÄGPSÉ豸
¡¤
¡¤
¡¤
5/42
Geolocation API
¿ÉÒÔ»ñµÃÓû§ËùÔÚµØÀíλÖõľ­Î³¶ÈÐÅÏ¢
µ÷Óà Geolocation API ´ÓÈ«¾Ö navigator¶ÔÏóµÄ geolocationÊôÐÔ¿ª
ʼ£ºnavigator.geolocation
°²²©ÖгÌÔÚÏß
1
2
3
4
5
6
<script?type='text/javascript'>
??//?×î¼òµ¥µÄʹÓ÷½Ê½£ºÃ»ÓÐ×öÈκεļì²â£¬´íÎó´¦Àí£¬Ò²Ã»ÓÐÑ¡Ïî²ÎÊý
??function?find_my_location()?{
????navigator.geolocation.getCurrentPosition(show_map)?
??}
</script>
6/42
Geolocation API
¼ì²âä¯ÀÀÆ÷ÊÇ·ñÖ§³ÖµØÀíλÖÃAPI
·½·¨1£º ¼ì²â¼ì²â È«¾Ö¶ÔÏó navigator ÊÇ·ñ¾ßÓÐ geolocation ÊôÐÔ
·½·¨2: ʹÓÃModernizrÌṩµÄ·½·¨ ¼ì²â¼ì²â
°²²©ÖгÌÔÚÏß
1
2
3
4
5
<script?type='text/javascript'>
??function?supports_geolocation()?{
????return?!!navigator.geolocation?
??}
</script>
1
2
3
4
5
6
7
8
9
<script?type='text/javascript'>
??function?find_my_location()?{
????if?(Modernizr.geolocation)?{
????????navigator.geolocation.getCurrentPosition(show_map)?
????}?else?{
????????//?ä¯ÀÀÆ÷ûÓÐÌṩԭÉúÖ§³Ö£¬Ê¹ÓûØÍË·½°¸
????}
??}
</script>
7/42
Geolocation API
getCurrentPosition()
ʹÓÃgetCurrentPosition()·½·¨ »ñÈ¡µ±Ç°Î»ÖÃÐÅÏ¢»ñÈ¡µ±Ç°Î»ÖÃÐÅÏ¢ .
°²²©ÖгÌÔÚÏß
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script?type='text/javascript'>
????function?find_my_location()?{
????????if?(Modernizr.geolocation)?{
????????????navigator.geolocation.getCurrentPosition(show_map)?
????????}?else?{
????????????//?ÆäËû·½°¸
????????}
????}
?????
????function?show_map(position)?{
????????var?latitude?=?position.coords.latitude?
????????var?longitude?=?position.coords.longitude?
????????alert('Lat:?'?+?latitude?+?'?Lon:?'?+?longitude)?
????}
</script>
8/42
Position Êý¾Ý
³É¹¦µÄ»Øµ÷º¯ÊýµÄ²ÎÊýÊÇÒ»¸ö Position¶ÔÏ󣬰üÀ¨ coordsºÍ timestampÁ½¸öÊôÐÔ¡£
ÊôÐÔ ÀàÐÍ ±¸×¢
coords.latitude double γ¶È(¶È)
coords.longitude double ¾­¶È(¶È)
coords.accuracy double ¾«¶È(Ã×)
coords.altitude double»ònull º£°Î(Ã×)
coords.altitudeAccuracy double»ònull º£°Î¾«¶È(Ã×)
coords.heading double»ònull ¶È(˳ʱÕ룬ÒÔÕý±±Îª»ù×¼)
coords.speed double»ònull Ã×/Ãë
timestamp DOMTimeStamp ¿ÉÒÔת³ÉDate¶ÔÏó
°²²©ÖгÌÔÚÏß 9/42
Handling Errors
getCurrentPosition()µÄµÚ¶þ¸ö²ÎÊý(¿ÉÑ¡)¡ª¡ªÈÝ´í´¦ÀíµÄ»Øµ÷º¯Êý£º
ÔÚ»ñÈ¡µØÀíλÖùý³ÌÖÐÓÐÈκδíÎ󣬶¼»áµ÷Óøûص÷º¯Êý£¬²¢ÇһᴫÈëÒ»¸ö
PositionError¶ÔÏó×÷Ϊ²ÎÊý¡£
°²²©ÖгÌÔÚÏß
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script?type='text/javascript'>
??function?find_my_location()?{
????if?(Modernizr.geolocation)?{
??????navigator.geolocation.getCurrentPosition(show_map,?handle_error)?
????}?else?{
??????//?ÆäËû·½°¸
????}
??}
???
??function?handle_error(err)?{
????if?(err.code?==?1)?{
??????//?Óû§Ëµ²»£¡
????}
??}????
</script>????
10/42
PositionError ¶ÔÏó
ÊôÐÔ ÀàÐÍ ±¸×¢
code short ¿Éö¾Ù
message DOMString ÓëÖÕ¶ËÓû§ÎÞ¹Ø
ÆäÖÐcodeÊôÐÔ¾ßÓÐÒÔÏÂÊôÐÔÖµ£º
°²²©ÖгÌÔÚÏß
PERMISSION_DENIED(1): Óû§²»Í¬Òâ±»»ñȡλÖÃÐÅÏ¢¡£
POSITION_UNAVAILABLE(2): ÍøÂç²»¿ÉÓûòÕßÎÞ·¨Á¬½Óµ½»ñȡλÖÃÐÅÏ¢µÄÎÀÐÇ¡£
TIMEOUT(3): ÍøÂç¿ÉÓõ«ÊÇ»¨ÁËÌ«³¤Ê±¼äµÄ¼ÆËãÓû§µÄλÖÃÉÏ¡£
UNKNOWN_ERROR(0): ·¢ÉúÆäËûδ֪´íÎó¡£
¡¤
¡¤
¡¤
¡¤
11/42
PositionOptions ¶ÔÏó
Á½ÖÖ¶¨Î»·½Ê½ºÍ»º´æµÄλÖÃÐÅÏ¢
ÊôÐÔ ÀàÐÍ Ä¬ÈÏÖµ ±¸×¢
enableHighAccuracy boolean false Éè³É true ¿ÉÄÜ»áʹµÃ»ñȡλÖõÄËٶȱäÂý
timeout long ûÓÐĬÈÏÖµ µ¥Î»£ººÁÃë
maximumAge long 0 µ¥Î»£ººÁÃë
°²²©ÖгÌÔÚÏß 12/42
Device Orientation
É豸ʼþ
É豸ʼþ
É豸ʼþ¿ÉÒÔÈÿª·¢ÈËԱȷ¶¨Óû§ÔÚÔõÑùʹÓÃÉ豸£¨ÖÇÄÜÊÖ»ú£¬Æ½°åµçÄÔ£©
°²²©ÖгÌÔÚÏß
orientationChangeʼþ
MozOrientationʼþ
deviceorientationʼþ
devicemotionʼþ
¡¤
¡¤
¡¤
¡¤
http://dev.w3.org/geo/api/spec-source-orientation
14/42
orientationchange ʼþ
Æ»¹û¹«Ë¾ÎªÒƶ¯ Safari Ìí¼ÓÁË orientationchangeʼþ£¬ÒԱ㿪·¢ÈËÔ±ÄÜÈ·¶¨Óû§
ºÎʱ½«É豸ÓɺáÏò²é¿´Ä£Ê½Çл»Îª×ÝÏò²é¿´Ä£Ê½¡£Òƶ¯ Safari µÄ
window.orientationÊôÐÔÖпÉÄÜ°üº¬3¸öÖµ£º
°²²©ÖгÌÔÚÏß
0±íʾФÏñģʽ£¨Portrait£©
90±íʾÏò×óÐýתµÄºáÏòģʽ£¨¡°Ö÷ÆÁÄ»¡±°´Å¥ÔÚÓҲࣩ
-90±íʾÏòÓÒÐýתµÄºáÏòģʽ£¨¡°Ö÷ÆÁÄ»¡±°´Å¥ÔÚ×ó²à£©
¡¤
¡¤
¡¤
15/42
´¦Àí orientationchange ʼþ
ÕâʱµÄ event¶ÔÏó²»°üº¬ÈκÎÓмÛÖµÐÅÏ¢£¬Î¨Ò»Ïà¹ØµÄÐÅÏ¢¿ÉÒÔͨ¹ý
window.orientation·ÃÎʵ½¡£
°²²©ÖгÌÔÚÏß
1
2
3
4
5
6
7
8
9
10
11
12
13
function?updateOrientation()?{
????switch(window.orientation)?{
????case?0:
????//?...
????case??90:????????????????????????
????//?....
????case?90:
????//?...
????case?180:
????//?...
????}
}?????
window.addEventListener('orientationchange',?updateOrientation,?false)?
16/42
Demo: orientationchange
¸ù¾Ý orientationchange ʼþ¶¯Ì¬¸ü¸ÄͼÏñ´óС
°²²©ÖгÌÔÚÏß 17/42
landscape ģʽÏ°ÑͼƬ¿í¸ßµ÷С
°²²©ÖгÌÔÚÏß
iPad 주http://192.168.1.113:8000/demo/device-access/orientation/orientationchange.html
18/42
Demo:orientation-mediaquery
ʵÏÖÕâ¸öЧ¹ûÒ²¿ÉÒÔʹÓÃýÌå²éѯ·½Ê½
°²²©ÖгÌÔÚÏß
rel="stylesheet"?media="all?and?(orientation:portrait)"?href="css/portrait.css">
rel="stylesheet"?media="all?and?(orientation:landscape)"?href="css/landscape.css">
http://192.168.1.113:8000/demo/device-access/orientation/orientationchange-mediaquery.html
19/42
deviceorientation ʼþ
¼ÓËٶȼƼì²âµ½É豸µÄ·½Ïò·¢Éú±ä»¯Ê±£¬»áÔÚ window¶ÔÏóÉÏ´¥·¢
deviceorientationʼþ¡£ÓÃÓÚ¸æËßÎÒÃÇÉ豸ÔÚ¿Õ¼äÉϳ¯ÏòÄĶù¡£
É豸×ø±êϵµÄ¸ÅÄxÖá·½ÏòÊÇ´Ó×óÍùÓÒ£¬yÖá·½ÏòÊÇ´ÓÏÂÍùÉÏ£¬zÖá·½ÏòÊÇ´ÓºóÍù
Ç°¡£µ±É豸¾²Ö¹·ÅÔÚˮƽ×ÀÃæʱ£¬ÕâÈý¸öÖµ¶¼ÊÇ 0¡£
°²²©ÖгÌÔÚÏß 20/42
deviceorientation ʼþ¶ÔÏó
ʼþ¶ÔÏó°üº¬×Åÿ¸öÖáÏà¶ÔÓÚÉ豸¾²Ö¹×´Ì¬Ï·¢Éú±ä»¯µÄÐÅÏ¢¡£
É豸×ø±êϵµÄ¸ÅÄxÖá·½ÏòÊÇ´Ó×óÍùÓÒ£¬yÖá·½ÏòÊÇ´ÓÏÂÍùÉÏ£¬zÖá·½ÏòÊÇ´ÓºóÍù
Ç°¡£µ±É豸¾²Ö¹·ÅÔÚˮƽ×ÀÃæʱ£¬ÕâÈý¸öÖµ¶¼ÊÇ 0¡£
ÆäÖÐÈý¸öÖ÷ÒªµÄÊôÐÔ£º
°²²©ÖгÌÔÚÏß
alpha: ÔÚΧÈÆ zÖáÐýתʱ£¨¼´×óÓÒÐýתʱ£©£¬yÖáµÄ¶ÈÊý²î¡£
beta: ÔÚΧÈÆ xÖáÐýתʱ£¨¼´Ç°ºóÐýתʱ£©£¬zÖáµÄ¶ÈÊý²î¡£
gamma: ÔÚΧÈÆ yÖáÐýתʱ£¨¼´Å¤×ªÉ豸ʱ£©£¬zÖáµÄ¶ÈÊý²î¡£
¡¤
¡¤
¡¤
21/42
alpha
ΧÈÆ z ÖáÐýת»áÒýÆð alpha Ðýת½Ç¶È·¢Éú±ä»¯¡£
µ±É豸¶¥²¿Ö¸ÏòµØÇòÕý±±·½Ïòʱ£¬alpha ½ÇÊÇ 0 ¶È£¬É豸Ïò×ó±ßÐýתʱÔö´ó£¬½éÓÚ 0 -
360 ¶ÈÖ®¼ä¡£
°²²©ÖгÌÔÚÏß 22/42
beta
ΧÈÆ x ÖáÐýת£¬Ò²¾ÍÊÇÇ°ºó·­×ª£¨³¯×ÅÓû§»òÕßÔ¶ÀëÓû§)ʱ£¬»áÒýÆð beta Ðýת½Ç¶È
±ä»¯¡£
É豸ˮƽ·ÅÖÃʱ£¬beta ½Ç¶ÈÊÇ 0 ¶È£»ÏòÉÏ·­Öð²½Ôö¼Óµ½ 180 ¶È£»ÏòÏ·­¼õÉÙµ½ -180
¶È¡£
°²²©ÖгÌÔÚÏß 23/42
gamma
ΧÈÆ y ÖáÐýת£¬»áÒýÆð gamma ½Ç¶ÈÖµµÄ±ä»¯¡£
ˮƽ·ÅÖýǶÈÊÇ 0£¬ÏòÓÒÅ¡Ôö¼Óµ½ 90 ¶È£»Ïò×óÅ¡¼õÉÙµ½ -90 ¶È¡£
°²²©ÖгÌÔÚÏß 24/42
Demo: deviceorientation
°²²©ÖгÌÔÚÏß
Rotate Chrome
Ä£Äâ orientation ʼþ£ºhttp://louisremi.github.com/orientation-devtool/
¡¤
¡¤
25/42
MozOrientation ʼþ
¼æÈÝÒƶ¯°æ Firefox
Firefox Òƶ¯ä¯ÀÀÆ÷ÉÏʵÏֵļì²âÉ豸·½ÏòµÄʼþ¡£¾²Ö¹×´Ì¬Ï£¬x ֵΪ 0£¬y ֵΪ
0£¬z ֵΪ 1¡£Õ⼸¸öÖµ¶¼½éÓÚ1ºÍ-1Ö®¼ä¡£
°²²©ÖгÌÔÚÏß
ÏòÓÒÇãб£¬x »á¼õÉÙµ½ -1£»Ïò×óÇãб£¬x »áÔö´óµ½ 1
ÏòÔ¶ÀëÓû§·½ÏòÇãб£¬y Öµ»á¼õÉÙµ½ -1£»Ïò½Ó½üÓû§·½ÏòÇãб£¬y Öµ»áÔö´óµ½ 1£»
¡¤
¡¤
1
2
3
4
5
??????//?Õë¶Ô?Android?°æµÄ?Firefox
if?(!evt.gamma?&&?!evt.beta)?{
??evt.gamma?=??(evt.x?*?(180?/?Math.PI))?
??evt.beta?=?(evt.y?*?(180?/?Math.PI))?
}
26/42
deviceorientation ²¹³ä˵Ã÷
½ØÖ¹2013Äê1Ô£¬Mozilla Éù³Æ×Ô FF6+ Ö®ºó¶¼Ö§³Ö deviceorientationʼþ£¬Êµ¼Ê
²¢²»Ö§³Ö£»·´¶øÊÇºÅ³Æ´Ó 3.6 ¿ªÊ¼Ö§³Ö£¬µ«ÊǺóÃæÓÖÒÆ×ßµÄ MozOrientationʼþÔÚ
Android °æµÄ Firefox ÉÏÖ§³Ö MozOrientationʼþ¡£
Chrome ºÍ Android °æµÄ WebKit£¬iOS4.2+ µÄ Safari ¾ùÖ§³Ö deviceorientation
ʼþ¡£
°²²©ÖгÌÔÚÏß
²Î¼û£ºhttp://caniuse.com/#feat=deviceorientation
27/42
devicemotion ʼþ
deviceorientationµÄ³¬¼¯£¬³ýÁË·½ÏòÐÅÏ¢ÒÔÍ⣬»¹ÓмÓËÙ¶ÈÐÅÏ¢¡£
°²²©ÖгÌÔÚÏß
acceleration: Ò»¸ö°üº¬ x£¬y£¬z ÊôÐԵĶÔÏ󣬲»¿¼ÂÇÖØÁ¦¼ÓËٶȵÄÇé¿ö¡£
accelerationIncludingGravity: ¿¼ÂÇ z Öá×ÔÈ»ÖØÁ¦¼ÓËÙµÄÇé¿öÏ£¬¸æËßÄãÿ¸ö·½Ïò
ÉϵļÓËٶȡ£
¡¤
¡¤
28/42
Touch Events
´¥¿Øʼþ
´¥¿ØºÍÊÖÊÆ
Notes: ÓÐЩÊÖÊƲ»²úÉúʼþ£¬ÓÐЩÊÖÊÆÐèÒªÔÚÒ»¶¨µÄÌõ¼þϲŻá²úÉúʼþ£»µ«ÊÇÎÒÃÇ
¿ÉÒÔͨ¹ý×éºÏ¸÷ÖÖÊÖÊƽøÐд¦Àí¡£
°²²©ÖгÌÔÚÏß
One-Finger Events
Two-Finger Events
Multi-Touch Events
¡¤
The panning gesture
The touch and hold gesture
The double-tap gesture
¡¤
¡¤
¡¤
¡¤
The pinch open gesture
Two-finger panning gesture
¡¤
¡¤
¡¤
30/42
Multi-touch Events
°²²©ÖгÌÔÚÏß
TouchEvent
Touch
TouchList
¡¤
¡¤
¡¤
31/42
TouchEvent ʼþÀàÐÍ
°²²©ÖгÌÔÚÏß
touchstart: µ±ÊÖÖ¸´¥ÃþÆÁĻʱ´¥·¢£¨¼´Ê¹ÒѾ­ÓÐÒ»¸öÊÖÖ¸ÒѾ­·ÅÔÚÁËÆÁÄ»ÉÏ£©
touchmove: µ±ÊÖÖ¸ÔÚÆÁÄ»ÉÏ»¬¶¯Ê±Á¬ÐøµÄ´¥·¢
touchend: µ±ÊÖÖ¸´ÓÆÁÄ»ÉÏÒÆ¿ªÊ±´¥·¢
touchcancel: µ±ÏµÍ³Í£Ö¹¸ú×Ù´¥Ãþʱ´¥·¢
¡¤
¡¤
¡¤
¡¤
32/42
TouchEvent µÄÊôÐÔ
°²²©ÖгÌÔÚÏß
Ê×ÏÈÊÇÔÚÊó±êʼþÖг£¼ûµÄÊôÐÔ: bubbles, cancelable, detail, altKey, ctrlKey ...
Æä´ÎÊÇÈý¸öÓÃÓÚ¸ú×Ù´¥ÃþµÄÊôÐÔ£º
¡¤
¡¤
touches: ±íʾµ±Ç°¸ú×ٵĴ¥Ãþ²Ù×÷µÄ Touch¶ÔÏóµÄÊý×é
targetTouches: Ìض¨ÓÚʼþÄ¿±êµÄ Touch¶ÔÏóµÄÊý×é
changeTouches: ±íʾ×ÔÉϴδ¥ÃþÒÔÀ´·¢ÉúÁËʲô¸Ä±äµÄ Touch¶ÔÏóµÄÊý×é
-
-
-
33/42
Touch ¶ÔÏóµÄÊôÐÔ
°²²©ÖгÌÔÚÏß
clientX: Ïà¶ÔÓÚ viewport µÄ x ×ø±ê£¬ÀàÐÍ long£¬µ¥Î»ÏñËØ
clientY: Ïà¶ÔÓÚ viewport µÄ y Öá×ø±ê
identifier£º´¥¿ØµãµÄΨһ±êʶ£¨±È·½ËµÒ»¸ùÊÖÖ¸¾ÍÊÇÒ»¸öÒ»¸ö´¥¿Øµã£©
pageX: Ò³ÃæÖÐµÄ x ×ø±ê
pageY£ºÒ³ÃæÖÐµÄ y ×ø±ê
screenX£ºÆÁÄ»ÖÐµÄ x ×ø±ê
screenY£ºÆÁÄ»ÖÐµÄ y ×ø±ê
target£º´¥ÃþµÄ DOM ½ÚµãÄ¿±ê
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
34/42
Multi-touch Demo
Touch Events + Canvas
°²²©ÖгÌÔÚÏß
ÉèÖô¥¿Øʼþ´¦Àí³ÌÐò
¸ú×ÙеĴ¥¿Ø(touchstart)·¢Éú
Ëæ×Å»¬¶¯(touchmove)½øÐÐ Canvas »æÖÆ
´¦Àí´¥¿Ø½áÊø(touchend)ʼþ
´¦Àí´¥¿ØÈ¡Ïû(touchcancel)ʼþ
¡¤
¡¤
¡¤
¡¤
¡¤
35/42
The panning gesture
Ö±µ½Óû§Í£Ö¹ panning µÄʱºò£¬One-finger panning ²Å»á²úÉúÒ»¸ö onscrollʼþ
°²²©ÖгÌÔÚÏß
A touch-scrollable div: http://eightmedia.github.com/hammer.js/scroll/
36/42
The touch and hold gesture
³¤°´²»»á²úÉúʼþ£»µ«ÊÇÈç¹û´¥¿ØµÄÊÇͼƬ£¬¿Éµã»÷Á´½Ó»òÊǿɱ༭ÄÚÈݵÈÍùÍù»áÉú
³ÉÒ»¸ö information bubble¡£(¸´ÖÆ£¬Õ³Ìù£¬È«Ñ¡£¬Í¼Æ¬Áí´æΪ ...)
°²²©ÖгÌÔÚÏß
Basic demo: http://eightmedia.github.com/hammer.js/demo/
37/42
The double-tap gesture
double tap Ò²²»²úÉúÈκÎʼþ
°²²©ÖгÌÔÚÏß
Basic demo: http://eightmedia.github.com/hammer.js/demo/
38/42
The pinch open gesture
pinch open gesture ²»²úÉúÈκÎÊó±êʼþ
°²²©ÖгÌÔÚÏß
http://eightmedia.github.com/hammer.js/zoom/, http://eightmedia.github.com/hammer.js/zoom/index2.html
39/42
Two finger panning gesture
°²²©ÖгÌÔÚÏß
Á½¸ùÊÖÖ¸°´×¡ÆÁÄ»²¢Òƶ¯£¬Èç¹ûÂäÔڿɹö¶¯µÄÔªËØÉÏ£¬²úÉú mousewheelʼþ
Èç¹ûÔªËز»Êǿɹö¶¯µÄ£¬Òƶ¯ÍøÒ³¡£ÔÚ panning ¹ý³ÌÖв»²úÉúʼþ
µ±Óû§Í£Ö¹ panning ʱ£¬²úÉúÒ»¸ö onscrollʼþ
¡¤
¡¤
¡¤
http://eightmedia.github.com/hammer.js/zoom/, http://eightmedia.github.com/hammer.js/zoom/index2.html
40/42
À©Õ¹ÔĶÁ
°²²©ÖгÌÔÚÏß
W3CµØÀíλÖà API
geo.js, µØÀíλÖõÄJS Framework¡£ÒÀÕÕW3CµØÀíλÖà API¹æ·¶·â×°Á˵ײãϵͳÌض¨µÄʵÏÖ¡£
This End Up: Using Device Orientation
Can I Use?
Specification: Touch Events
Drag and drop for iPhone and Android
Safari Web Content Guide: Handling Events
Hammer.js: A javascript library for multi-touch gestures
MDN: Touch Events
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
41/42
<Thank you!>
΢²© @·¶Ê¥¸Õ
²©¿Í www.tfan.org
github github.com/princetoad

More Related Content

Deviceaccess