SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Hell is other browsers - Sartre


The touch events

   Peter-Paul Koch (ppk)
 http://quirksmode.org
 http://twitter.com/ppk
     DIBI, 28 April 2010
The desktop web
Boring!

-   Only five browsers
-   with only one viewport each
-   that support nearly everything
-   Even IE? Yes, even IE.
The Mobile Web
Exciting!

- Fifteen browsers and counting
- ranging from great to lousy
- Interesting new bugs
- About five times as many users as the
  desktop web (eventually)
- New interaction modes
The Mobile Web
Exciting!

- Fifteen browsers and counting
- ranging from great to lousy
- Interesting new bugs
- About five times as many users as the
  desktop web (eventually)
- New interaction modes
Before we start
please open the following link on your
iPhone or Android:

http://quirksmode.org/touchevents

It gives links to the test files.
Mouse
Mouse




Keyboard
Mouse




Keyboard




Touch
Keyboard users need different Mouse
interaction than mouse users
need different interactions than touch
users.

Your script accomodates all three
modes, right?

It's all a question of events.
keydown
keypress
keyup
mouseover
mouseout
mousedown
mouseup
mousemove
touchstart
touchmove
touchend
touchcancel
It's not an either-or proposition.
It's not an either-or proposition.

                         The Nokia E71
                         has a four-way
                         navigation.
                         Works like the
                         arrow keys
                         (including
                         keycodes).

                         But...
It's not an either-or proposition.

                         But...
                         the “arrow keys”
                         steer a mouse
                         cursor.

                         Key events
                         and mouse
                         events
Today we'll concentrate on the touch
events, though.
Touch !== mouse
-   Area
-   Pressure
-   Temperature
-   more than one touch
http://quirksmode.org/touchevents

Open the first dropdown example.

Task: Click on option 3.2

This is with traditional mouseover and
mouseout; no touch-specific code.
Works (a bit oddly, but works).
dropdown.onmouseover = function (e) {
  // open dropdown
  dropdown.onmouseout = function (e) {
    // close dropdown
    // if appropriate
    dropdown.onmouseout = null
  }
}
http://quirksmode.org/touchevents

Now open the second dropdown
example.

Task: Click on option 3.2

Doesn't work.
dropdown.onmouseovertouchstart
  = function (e) {
  // open dropdown
  dropdown.onmouseouttouchend
     = function (e) {
    // close dropdown
    // if appropriate
    dropdown.onmouseout = null
  }
}
Not an entirely fair comparison.
Not an entirely fair comparison.

Touchstart and touchend are not the
equivalents of mouseover and
mouseout.

Still, there is no better option.
Besides, it shows how different touch
interaction is from mouse interaction.
Interaction modes
Mouse       Keyboard Touch
mousedown   keydown    touchstart
mousemove   keypress   touchmove
mouseup     keyup      touchend
mouseover   focus      -
mouseout    blur       -
All         All        iPhone,
                       Android
There is no true hover on a touchscreen.

No way of saying “I might be interested
in this element but I'm not sure yet.”

Instead, the mobile browsers fake
mouseover/out and :hover.
(We'll see how later.)
Interaction modes
Mouse         Keyboard Touch
mousedown     keydown        touchstart
mousemove     keypress       touchmove
mouseup       keyup          touchend
mouseover     focus          -
mouseout      blur           -
load, unload, click, submit, resize,
zoom, change etc. etc.
Interaction modes
Mouse         Keyboard Touch
mousedown     keydown        touchstart
mousemove     keypress       touchmove
mouseup       keyup          touchend
mouseover     focus          -
mouseout      blur           -
load, unload, click, submit, resize,
zoom, change etc. etc.
Interaction modes
Mouse         Keyboard Touch
mousedown     keydown        touchstart
mousemove     keypress       touchmove
mouseup       keyup          touchend
mouseover     focus          -
mouseout      blur           -
load, unload, click, submit, resize,
zoom, change etc. etc.
Interaction modes
Mouse         Keyboard Touch
mousedown     keydown        touchstart
mousemove     keypress       touchmove
mouseup       keyup          touchend
mouseover     focus          -
mouseout      blur           -
load, unload, click, submit, resize,
zoom, change etc. etc.
In theory a touchscreen device should
fire only the touch events, and not the
mouse events.

However, too many websites depend on
the mouse events, so touch browser
vendors are forced to support them,
too.
Therefore, when you touch the screen of
a touchscreen, both touch and mouse
events fire.

But the mouse events are a bit special.
They all fire at the same time.
http://quirksmode.org/touchevents

You can test the events for yourself at
the touch action test page.
touchstart
mouseover
mousemove (only one!)
mousedown
mouseup
click
:hover styles applied
When the user touches another element
mouseout
:hover styles removed

On the iPhone this element must listen
to events. If it doesn't, it's not clickable
and events do not fire.
touchstart      If a DOM change occurs
mouseover       onmouseover or
mousemove       onmousemove, the rest
mousedown       of the events is cancelled.
mouseup         (iPhone and Symbian)
click
:hover styles   applied
http://quirksmode.org/touchevents

Now open the first drag-and-drop
example.

Should work fine; both on touch devices
and with a mouse.

This is very simple.
element.onmousedown = function (e) {
  // initialise
  document.onmousemove = function (e) {
    // move
  }
  document.onmouseup = function (e) {
    document.onmousemove = null;
    document.onmouseup = null;
  }
}
element.onmousedown = function (e) {
  // initialise
  document.onmousemove = function (e) {
    // move
  }
  document.onmouseup = function (e) {
    document.onmousemove = null;
    document.onmouseup = null;
  }
}

Set mousemove and mouseup handlers only
when mousedown has taken place.
May save some processing time; especially
on mobile.
element.onmousedown = function (e) {
  // initialise
  document.onmousemove = function (e) {
    // move
  }
  document.onmouseup = function (e) {
    document.onmousemove = null;
    document.onmouseup = null;
  }
}

Set mousemove and mouseup handlers on
the document.
Helps when user moves too fast and
“overshoots”: the script remains functional.
element.onmousedown = function (e) {
  // initialise
  document.onmousemove = function (e) {
    // move
  }
  document.onmouseup = function (e) {
    document.onmousemove = null;
    document.onmouseup = null;
  }
}
element.ontouchstart = function (e) {
  // initialise
  document.ontouchmove = function (e) {
    // move
  }
  document.ontouchend = function (e) {
    document.ontouchmove = null;
    document.ontouchend = null;
  }
}


But: how do we know which events to
use? How do we know whether a user
uses a mouse or a touchscreen?
element.onmousedown = function (e) {
  document.onmousemove = etc.
  document.onmouseup = etc.
}

element.ontouchstart = function (e) {
  document.ontouchmove = etc.
  document.ontouchend = etc.
}
element.onmousedown = function (e) {
  document.onmousemove = etc.
  document.onmouseup = etc.
}

element.ontouchstart = function (e) {
  element.onmousedown = null;
  document.ontouchmove = etc.
  document.ontouchend = etc.
}

Remove the mousedown event handler when
a touchstart takes place: now you're certain
that the user uses a touchscreen.
http://quirksmode.org/touchevents

Now open the second drag-and-drop
example.

iPhone only.
Try dragging two or all three layers
simultaneously.
(A bit stilted, but you get the point.)
This is impossible on a desktop
computer. Two mice?

Useful for games, maybe (especially on
the iPad).

Does not work on Android: the browser
doesn't (yet) support true multitouch.
http://quirksmode.org/touchevents

Now open the scrolling layer example.

Works fine – on mobile.
But how do we port this to the other
interaction modes?
- keys: use arrow keys
- mouse: ???
Interaction modes

-   mouse
-   keyboard
-   touch
-   and a fourth....
Interaction modes

-   mouse
-   keyboard
-   touch
-   trackball

Generally fires a
mousemove event
Thank you!
      Questions?
http://quirksmode.org
http://twitter.com/ppk

Más contenido relacionado

La actualidad más candente

Keyboard and mouse events in python
Keyboard and mouse events in pythonKeyboard and mouse events in python
Keyboard and mouse events in pythonmal6ayer
 
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...Patrick Lauke
 
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013Patrick Lauke
 
Getting touchy - an introduction to touch and pointer events (complete master...
Getting touchy - an introduction to touch and pointer events (complete master...Getting touchy - an introduction to touch and pointer events (complete master...
Getting touchy - an introduction to touch and pointer events (complete master...Patrick Lauke
 
Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...Patrick Lauke
 
дыдыкин егор
дыдыкин егордыдыкин егор
дыдыкин егорkuchinskaya
 
Flash Lite & Touch: build an iPhone-like dynamic list
Flash Lite & Touch: build an iPhone-like dynamic listFlash Lite & Touch: build an iPhone-like dynamic list
Flash Lite & Touch: build an iPhone-like dynamic listSmall Screen Design
 
Fast multi touch enabled web sites
Fast multi touch enabled web sitesFast multi touch enabled web sites
Fast multi touch enabled web sitesAspenware
 
Wii Ruby All Work And No Play Just Wont Do
Wii Ruby All Work And No Play Just Wont DoWii Ruby All Work And No Play Just Wont Do
Wii Ruby All Work And No Play Just Wont DoLittleBIGRuby
 
YUI for Mobile - HTML5DevConf 11
YUI for Mobile - HTML5DevConf 11YUI for Mobile - HTML5DevConf 11
YUI for Mobile - HTML5DevConf 11Gonzalo Cordero
 
Developing social simulations with UbikSim
Developing social simulations with UbikSimDeveloping social simulations with UbikSim
Developing social simulations with UbikSimEmilio Serrano
 
YUI for control freaks - a presentation at The Ajax Experience
YUI for control freaks - a presentation at The Ajax ExperienceYUI for control freaks - a presentation at The Ajax Experience
YUI for control freaks - a presentation at The Ajax ExperienceChristian Heilmann
 

La actualidad más candente (15)

Keyboard and mouse events in python
Keyboard and mouse events in pythonKeyboard and mouse events in python
Keyboard and mouse events in python
 
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
 
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
 
Getting touchy - an introduction to touch and pointer events (complete master...
Getting touchy - an introduction to touch and pointer events (complete master...Getting touchy - an introduction to touch and pointer events (complete master...
Getting touchy - an introduction to touch and pointer events (complete master...
 
Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...
 
дыдыкин егор
дыдыкин егордыдыкин егор
дыдыкин егор
 
Flash Lite & Touch: build an iPhone-like dynamic list
Flash Lite & Touch: build an iPhone-like dynamic listFlash Lite & Touch: build an iPhone-like dynamic list
Flash Lite & Touch: build an iPhone-like dynamic list
 
ev
evev
ev
 
Ms Ajax Dom Event Class
Ms Ajax Dom Event ClassMs Ajax Dom Event Class
Ms Ajax Dom Event Class
 
Fast multi touch enabled web sites
Fast multi touch enabled web sitesFast multi touch enabled web sites
Fast multi touch enabled web sites
 
Wii Ruby All Work And No Play Just Wont Do
Wii Ruby All Work And No Play Just Wont DoWii Ruby All Work And No Play Just Wont Do
Wii Ruby All Work And No Play Just Wont Do
 
Yui mobile
Yui mobileYui mobile
Yui mobile
 
YUI for Mobile - HTML5DevConf 11
YUI for Mobile - HTML5DevConf 11YUI for Mobile - HTML5DevConf 11
YUI for Mobile - HTML5DevConf 11
 
Developing social simulations with UbikSim
Developing social simulations with UbikSimDeveloping social simulations with UbikSim
Developing social simulations with UbikSim
 
YUI for control freaks - a presentation at The Ajax Experience
YUI for control freaks - a presentation at The Ajax ExperienceYUI for control freaks - a presentation at The Ajax Experience
YUI for control freaks - a presentation at The Ajax Experience
 

Destacado

Social Media Analysis for Government Communicators
Social Media Analysis for Government CommunicatorsSocial Media Analysis for Government Communicators
Social Media Analysis for Government CommunicatorsAndrew Einhorn
 
The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source CreativitySara Cannon
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)maditabalnco
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Destacado (7)

Social Media Analysis for Government Communicators
Social Media Analysis for Government CommunicatorsSocial Media Analysis for Government Communicators
Social Media Analysis for Government Communicators
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 
The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source Creativity
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similar a Touchevents

Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Patrick Lauke
 
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013Patrick Lauke
 
Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Patrick Lauke
 
Getting touchy - an introduction to touch events / Web Standards Days / Mosco...
Getting touchy - an introduction to touch events / Web Standards Days / Mosco...Getting touchy - an introduction to touch events / Web Standards Days / Mosco...
Getting touchy - an introduction to touch events / Web Standards Days / Mosco...Patrick Lauke
 
Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...
Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...
Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...Patrick Lauke
 
Getting touchy - an introduction to touch and pointer events / Smashing Confe...
Getting touchy - an introduction to touch and pointer events / Smashing Confe...Getting touchy - an introduction to touch and pointer events / Smashing Confe...
Getting touchy - an introduction to touch and pointer events / Smashing Confe...Patrick Lauke
 
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...Patrick Lauke
 
Yahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsYahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsPeter-Paul Koch
 
Multi Touch And Gesture Event Interface And Types
Multi Touch And Gesture Event Interface And TypesMulti Touch And Gesture Event Interface And Types
Multi Touch And Gesture Event Interface And TypesEthan Cha
 
Alice05
Alice05Alice05
Alice05h2vs10
 
Cucumber meets iPhone
Cucumber meets iPhoneCucumber meets iPhone
Cucumber meets iPhoneErin Dees
 
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...Patrick Lauke
 
CSS for Touch Devices
CSS for Touch DevicesCSS for Touch Devices
CSS for Touch DevicesEmma Woods
 
1 module mouse basics
1 module mouse basics1 module mouse basics
1 module mouse basicsRozell Sneede
 
Tips for building fast multi touch enabled web sites
 Tips for building fast multi touch enabled web sites Tips for building fast multi touch enabled web sites
Tips for building fast multi touch enabled web sitesAspenware
 
DHTML - Events & Buttons
DHTML - Events  & ButtonsDHTML - Events  & Buttons
DHTML - Events & ButtonsDeep Patel
 
Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...
Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...
Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...Patrick Lauke
 

Similar a Touchevents (20)

Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...
 
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
 
Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...
 
Getting touchy - an introduction to touch events / Web Standards Days / Mosco...
Getting touchy - an introduction to touch events / Web Standards Days / Mosco...Getting touchy - an introduction to touch events / Web Standards Days / Mosco...
Getting touchy - an introduction to touch events / Web Standards Days / Mosco...
 
Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...
Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...
Getting touchy - Introduction to touch (and pointer) events / jQuery Europe 2...
 
Getting touchy - an introduction to touch and pointer events / Smashing Confe...
Getting touchy - an introduction to touch and pointer events / Smashing Confe...Getting touchy - an introduction to touch and pointer events / Smashing Confe...
Getting touchy - an introduction to touch and pointer events / Smashing Confe...
 
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
 
Yahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsYahoo presentation: JavaScript Events
Yahoo presentation: JavaScript Events
 
Multi Touch And Gesture Event Interface And Types
Multi Touch And Gesture Event Interface And TypesMulti Touch And Gesture Event Interface And Types
Multi Touch And Gesture Event Interface And Types
 
Alice05
Alice05Alice05
Alice05
 
Cucumber meets iPhone
Cucumber meets iPhoneCucumber meets iPhone
Cucumber meets iPhone
 
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
 
CSS for Touch Devices
CSS for Touch DevicesCSS for Touch Devices
CSS for Touch Devices
 
1 - Mouse Basics
1 - Mouse Basics1 - Mouse Basics
1 - Mouse Basics
 
3 module basic hardware
3 module basic hardware3 module basic hardware
3 module basic hardware
 
1 module mouse basics
1 module mouse basics1 module mouse basics
1 module mouse basics
 
Tips for building fast multi touch enabled web sites
 Tips for building fast multi touch enabled web sites Tips for building fast multi touch enabled web sites
Tips for building fast multi touch enabled web sites
 
DHTML - Events & Buttons
DHTML - Events  & ButtonsDHTML - Events  & Buttons
DHTML - Events & Buttons
 
Basic computer-skills1
Basic computer-skills1Basic computer-skills1
Basic computer-skills1
 
Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...
Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...
Getting touchy - an introduction to touch and pointer events (Workshop) / Jav...
 

Último

What-are-the-latest-modular-wardrobe-designs.pdf
What-are-the-latest-modular-wardrobe-designs.pdfWhat-are-the-latest-modular-wardrobe-designs.pdf
What-are-the-latest-modular-wardrobe-designs.pdfKams Designer Zone
 
MADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdf
MADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdfMADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdf
MADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdfknoxdigital1
 
Listing Turkey - Viva Perla Maltepe Catalog
Listing Turkey - Viva Perla Maltepe CatalogListing Turkey - Viva Perla Maltepe Catalog
Listing Turkey - Viva Perla Maltepe CatalogListing Turkey
 
What Is Biophilic Design .pdf
What Is Biophilic Design            .pdfWhat Is Biophilic Design            .pdf
What Is Biophilic Design .pdfyamunaNMH
 
Everything you ever Wanted to Know about Florida Property Tax Exemptions.pdf
Everything you ever Wanted to Know about Florida Property Tax Exemptions.pdfEverything you ever Wanted to Know about Florida Property Tax Exemptions.pdf
Everything you ever Wanted to Know about Florida Property Tax Exemptions.pdfTim Wilmath
 
DLF Plots Sriperumbudur in Chennai E Brochure Pdf
DLF Plots Sriperumbudur in Chennai E Brochure PdfDLF Plots Sriperumbudur in Chennai E Brochure Pdf
DLF Plots Sriperumbudur in Chennai E Brochure Pdfashiyadav24
 
Shapoorji Spectra Sensorium Hinjewadi Pune | E-Brochure
Shapoorji Spectra Sensorium Hinjewadi Pune | E-BrochureShapoorji Spectra Sensorium Hinjewadi Pune | E-Brochure
Shapoorji Spectra Sensorium Hinjewadi Pune | E-BrochureOmanaConsulting
 
How to Navigate the Eviction Process in Pennsylvania: A Landlord's Guide
How to Navigate the Eviction Process in Pennsylvania: A Landlord's GuideHow to Navigate the Eviction Process in Pennsylvania: A Landlord's Guide
How to Navigate the Eviction Process in Pennsylvania: A Landlord's GuideezLandlordForms
 
Prestige Sector 94 at Noida E Brochure.pdf
Prestige Sector 94 at Noida E Brochure.pdfPrestige Sector 94 at Noida E Brochure.pdf
Prestige Sector 94 at Noida E Brochure.pdfsarak0han45400
 
Sobha Aranya Sector 80 Gurgaon E- Brochure.pdf
Sobha Aranya Sector 80 Gurgaon E- Brochure.pdfSobha Aranya Sector 80 Gurgaon E- Brochure.pdf
Sobha Aranya Sector 80 Gurgaon E- Brochure.pdffaheemali990101
 
SVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property BroadcastSVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property BroadcastSVN International Corp.
 
Brigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- BrochureBrigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- Brochurefaheemali990101
 
8 Key Elements for Comfortable Farmland Living
8 Key Elements for Comfortable Farmland Living 8 Key Elements for Comfortable Farmland Living
8 Key Elements for Comfortable Farmland Living Farmland Bazaar
 
A Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdfA Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdfTim Wilmath
 
Mahindra Vista Kandivali East Mumbai Brochure.pdf
Mahindra Vista Kandivali East Mumbai Brochure.pdfMahindra Vista Kandivali East Mumbai Brochure.pdf
Mahindra Vista Kandivali East Mumbai Brochure.pdfPrachiRudram
 
Managed Farmland Brochures to get more in
Managed Farmland Brochures to get more inManaged Farmland Brochures to get more in
Managed Farmland Brochures to get more inknoxdigital1
 
Ebullient Investments Limited specializes in Building contractor
Ebullient Investments Limited specializes in Building contractorEbullient Investments Limited specializes in Building contractor
Ebullient Investments Limited specializes in Building contractorEbullient Investments Limited
 
Kolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdf
Kolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdfKolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdf
Kolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdfAhanundefined
 

Último (20)

What-are-the-latest-modular-wardrobe-designs.pdf
What-are-the-latest-modular-wardrobe-designs.pdfWhat-are-the-latest-modular-wardrobe-designs.pdf
What-are-the-latest-modular-wardrobe-designs.pdf
 
MADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdf
MADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdfMADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdf
MADHUGIRI FARM LAND BROCHURES (11)_compressed (1).pdf
 
Listing Turkey - Viva Perla Maltepe Catalog
Listing Turkey - Viva Perla Maltepe CatalogListing Turkey - Viva Perla Maltepe Catalog
Listing Turkey - Viva Perla Maltepe Catalog
 
What Is Biophilic Design .pdf
What Is Biophilic Design            .pdfWhat Is Biophilic Design            .pdf
What Is Biophilic Design .pdf
 
Everything you ever Wanted to Know about Florida Property Tax Exemptions.pdf
Everything you ever Wanted to Know about Florida Property Tax Exemptions.pdfEverything you ever Wanted to Know about Florida Property Tax Exemptions.pdf
Everything you ever Wanted to Know about Florida Property Tax Exemptions.pdf
 
DLF Plots Sriperumbudur in Chennai E Brochure Pdf
DLF Plots Sriperumbudur in Chennai E Brochure PdfDLF Plots Sriperumbudur in Chennai E Brochure Pdf
DLF Plots Sriperumbudur in Chennai E Brochure Pdf
 
Shapoorji Spectra Sensorium Hinjewadi Pune | E-Brochure
Shapoorji Spectra Sensorium Hinjewadi Pune | E-BrochureShapoorji Spectra Sensorium Hinjewadi Pune | E-Brochure
Shapoorji Spectra Sensorium Hinjewadi Pune | E-Brochure
 
How to Navigate the Eviction Process in Pennsylvania: A Landlord's Guide
How to Navigate the Eviction Process in Pennsylvania: A Landlord's GuideHow to Navigate the Eviction Process in Pennsylvania: A Landlord's Guide
How to Navigate the Eviction Process in Pennsylvania: A Landlord's Guide
 
Prestige Sector 94 at Noida E Brochure.pdf
Prestige Sector 94 at Noida E Brochure.pdfPrestige Sector 94 at Noida E Brochure.pdf
Prestige Sector 94 at Noida E Brochure.pdf
 
Sobha Aranya Sector 80 Gurgaon E- Brochure.pdf
Sobha Aranya Sector 80 Gurgaon E- Brochure.pdfSobha Aranya Sector 80 Gurgaon E- Brochure.pdf
Sobha Aranya Sector 80 Gurgaon E- Brochure.pdf
 
SVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property BroadcastSVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property Broadcast
 
young call girls in Lajpat Nagar,🔝 9953056974 🔝 escort Service
young call girls in Lajpat Nagar,🔝 9953056974 🔝 escort Serviceyoung call girls in Lajpat Nagar,🔝 9953056974 🔝 escort Service
young call girls in Lajpat Nagar,🔝 9953056974 🔝 escort Service
 
Brigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- BrochureBrigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- Brochure
 
8 Key Elements for Comfortable Farmland Living
8 Key Elements for Comfortable Farmland Living 8 Key Elements for Comfortable Farmland Living
8 Key Elements for Comfortable Farmland Living
 
A Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdfA Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdf
 
Mahindra Vista Kandivali East Mumbai Brochure.pdf
Mahindra Vista Kandivali East Mumbai Brochure.pdfMahindra Vista Kandivali East Mumbai Brochure.pdf
Mahindra Vista Kandivali East Mumbai Brochure.pdf
 
Managed Farmland Brochures to get more in
Managed Farmland Brochures to get more inManaged Farmland Brochures to get more in
Managed Farmland Brochures to get more in
 
Ebullient Investments Limited specializes in Building contractor
Ebullient Investments Limited specializes in Building contractorEbullient Investments Limited specializes in Building contractor
Ebullient Investments Limited specializes in Building contractor
 
Kolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdf
Kolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdfKolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdf
Kolte Patil Mirabilis at Horamavu Road, Bangalore E brochure.pdf
 
9953056974 Low Rate Call Girls In Saket, Delhi NCR
9953056974 Low Rate Call Girls In Saket, Delhi NCR9953056974 Low Rate Call Girls In Saket, Delhi NCR
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Touchevents

  • 1. Hell is other browsers - Sartre The touch events Peter-Paul Koch (ppk) http://quirksmode.org http://twitter.com/ppk DIBI, 28 April 2010
  • 2. The desktop web Boring! - Only five browsers - with only one viewport each - that support nearly everything - Even IE? Yes, even IE.
  • 3.
  • 4. The Mobile Web Exciting! - Fifteen browsers and counting - ranging from great to lousy - Interesting new bugs - About five times as many users as the desktop web (eventually) - New interaction modes
  • 5. The Mobile Web Exciting! - Fifteen browsers and counting - ranging from great to lousy - Interesting new bugs - About five times as many users as the desktop web (eventually) - New interaction modes
  • 6. Before we start please open the following link on your iPhone or Android: http://quirksmode.org/touchevents It gives links to the test files.
  • 10. Keyboard users need different Mouse interaction than mouse users need different interactions than touch users. Your script accomodates all three modes, right? It's all a question of events.
  • 14. It's not an either-or proposition.
  • 15. It's not an either-or proposition. The Nokia E71 has a four-way navigation. Works like the arrow keys (including keycodes). But...
  • 16. It's not an either-or proposition. But... the “arrow keys” steer a mouse cursor. Key events and mouse events
  • 17. Today we'll concentrate on the touch events, though.
  • 18. Touch !== mouse - Area - Pressure - Temperature - more than one touch
  • 19. http://quirksmode.org/touchevents Open the first dropdown example. Task: Click on option 3.2 This is with traditional mouseover and mouseout; no touch-specific code. Works (a bit oddly, but works).
  • 20. dropdown.onmouseover = function (e) { // open dropdown dropdown.onmouseout = function (e) { // close dropdown // if appropriate dropdown.onmouseout = null } }
  • 21. http://quirksmode.org/touchevents Now open the second dropdown example. Task: Click on option 3.2 Doesn't work.
  • 22. dropdown.onmouseovertouchstart = function (e) { // open dropdown dropdown.onmouseouttouchend = function (e) { // close dropdown // if appropriate dropdown.onmouseout = null } } Not an entirely fair comparison.
  • 23. Not an entirely fair comparison. Touchstart and touchend are not the equivalents of mouseover and mouseout. Still, there is no better option. Besides, it shows how different touch interaction is from mouse interaction.
  • 24. Interaction modes Mouse Keyboard Touch mousedown keydown touchstart mousemove keypress touchmove mouseup keyup touchend mouseover focus - mouseout blur - All All iPhone, Android
  • 25. There is no true hover on a touchscreen. No way of saying “I might be interested in this element but I'm not sure yet.” Instead, the mobile browsers fake mouseover/out and :hover. (We'll see how later.)
  • 26. Interaction modes Mouse Keyboard Touch mousedown keydown touchstart mousemove keypress touchmove mouseup keyup touchend mouseover focus - mouseout blur - load, unload, click, submit, resize, zoom, change etc. etc.
  • 27. Interaction modes Mouse Keyboard Touch mousedown keydown touchstart mousemove keypress touchmove mouseup keyup touchend mouseover focus - mouseout blur - load, unload, click, submit, resize, zoom, change etc. etc.
  • 28. Interaction modes Mouse Keyboard Touch mousedown keydown touchstart mousemove keypress touchmove mouseup keyup touchend mouseover focus - mouseout blur - load, unload, click, submit, resize, zoom, change etc. etc.
  • 29. Interaction modes Mouse Keyboard Touch mousedown keydown touchstart mousemove keypress touchmove mouseup keyup touchend mouseover focus - mouseout blur - load, unload, click, submit, resize, zoom, change etc. etc.
  • 30. In theory a touchscreen device should fire only the touch events, and not the mouse events. However, too many websites depend on the mouse events, so touch browser vendors are forced to support them, too.
  • 31. Therefore, when you touch the screen of a touchscreen, both touch and mouse events fire. But the mouse events are a bit special. They all fire at the same time.
  • 32. http://quirksmode.org/touchevents You can test the events for yourself at the touch action test page.
  • 34. When the user touches another element mouseout :hover styles removed On the iPhone this element must listen to events. If it doesn't, it's not clickable and events do not fire.
  • 35. touchstart If a DOM change occurs mouseover onmouseover or mousemove onmousemove, the rest mousedown of the events is cancelled. mouseup (iPhone and Symbian) click :hover styles applied
  • 36. http://quirksmode.org/touchevents Now open the first drag-and-drop example. Should work fine; both on touch devices and with a mouse. This is very simple.
  • 37. element.onmousedown = function (e) { // initialise document.onmousemove = function (e) { // move } document.onmouseup = function (e) { document.onmousemove = null; document.onmouseup = null; } }
  • 38. element.onmousedown = function (e) { // initialise document.onmousemove = function (e) { // move } document.onmouseup = function (e) { document.onmousemove = null; document.onmouseup = null; } } Set mousemove and mouseup handlers only when mousedown has taken place. May save some processing time; especially on mobile.
  • 39. element.onmousedown = function (e) { // initialise document.onmousemove = function (e) { // move } document.onmouseup = function (e) { document.onmousemove = null; document.onmouseup = null; } } Set mousemove and mouseup handlers on the document. Helps when user moves too fast and “overshoots”: the script remains functional.
  • 40. element.onmousedown = function (e) { // initialise document.onmousemove = function (e) { // move } document.onmouseup = function (e) { document.onmousemove = null; document.onmouseup = null; } }
  • 41. element.ontouchstart = function (e) { // initialise document.ontouchmove = function (e) { // move } document.ontouchend = function (e) { document.ontouchmove = null; document.ontouchend = null; } } But: how do we know which events to use? How do we know whether a user uses a mouse or a touchscreen?
  • 42. element.onmousedown = function (e) { document.onmousemove = etc. document.onmouseup = etc. } element.ontouchstart = function (e) { document.ontouchmove = etc. document.ontouchend = etc. }
  • 43. element.onmousedown = function (e) { document.onmousemove = etc. document.onmouseup = etc. } element.ontouchstart = function (e) { element.onmousedown = null; document.ontouchmove = etc. document.ontouchend = etc. } Remove the mousedown event handler when a touchstart takes place: now you're certain that the user uses a touchscreen.
  • 44. http://quirksmode.org/touchevents Now open the second drag-and-drop example. iPhone only. Try dragging two or all three layers simultaneously. (A bit stilted, but you get the point.)
  • 45. This is impossible on a desktop computer. Two mice? Useful for games, maybe (especially on the iPad). Does not work on Android: the browser doesn't (yet) support true multitouch.
  • 46. http://quirksmode.org/touchevents Now open the scrolling layer example. Works fine – on mobile. But how do we port this to the other interaction modes? - keys: use arrow keys - mouse: ???
  • 47. Interaction modes - mouse - keyboard - touch - and a fourth....
  • 48. Interaction modes - mouse - keyboard - touch - trackball Generally fires a mousemove event
  • 49. Thank you! Questions? http://quirksmode.org http://twitter.com/ppk