Vreemde Browsers

A presentation at Fronteers @ VI Company in June 2015 in Rotterdam, Netherlands by Niels Leenheer

Slide 1

Slide 1

?vreemde browsers? fronteers — 3 juni 2015

Slide 2

Slide 2

402 Edge 396 526 Safari 8 Chrome 43 0 555 336 467 Internet Explorer 11 Firefox 38 resultaten van desktop-browsers op html5test.com

Slide 3

Slide 3

402 Edge 396 526 Safari 8 Chrome 43 0 555 336 467 Internet Explorer 11 Firefox 38 resultaten van desktop-browsers op html5test.com

Slide 4

Slide 4

402 Edge 396 526 Safari 8 Chrome 43 0 555 16 336 467 Internet Explorer 6 Internet Explorer 11 Firefox 38 resultaten van desktop-browsers op html5test.com

Slide 5

Slide 5

Slide 6

Slide 6

?vreemde browsers?

Slide 7

Slide 7

browsers en apparaten die niet aan de huidige verwachtingen voldoen

Slide 8

Slide 8

?vreemde browsers?

Slide 9

Slide 9

?vreemde browsers?

Slide 10

Slide 10

game consoles

Slide 11

Slide 11

portable game consoles

Slide 12

Slide 12

smart tv’s

Slide 13

Slide 13

e-readers

Slide 14

Slide 14

smartwatches

Slide 15

Slide 15

fotocamera’s

Slide 16

Slide 16

Andre Jay Meissner auto’s

Slide 17

Slide 17

vergelijkbaar met mobiel vóór de komst van de iphone en android iedereen doet maar wat

Slide 18

Slide 18

Slide 19

Slide 19

Slide 20

Slide 20

smart tv’s en consoles

Slide 21

Slide 21

Slide 22

Slide 22

televisie-browsers zijn best goed de laatste generatie televisies gebruikt besturingssystemen die afkomstig zijn van mobiel

Slide 23

Slide 23

281 Google TV 443 414 238 Panasonic Firefox OS LG Netcast LG WebOS 0 555 301 414 Panasonic Viera Samsung 2014 465 Samsung Tizen 449 Opera Devices resultaten van smart tv’s op html5test.com

Slide 24

Slide 24

53 328 Playstation 3 Playstation TV 98 328 Xbox 360 Playstation 4 286 Xbox One 0 555 66 265 Wii Wii U resultaten van console’s op html5test.com

Slide 25

Slide 25

Slide 26

Slide 26

Slide 27

Slide 27

Slide 28

Slide 28

Slide 29

Slide 29

1 bediening

Slide 30

Slide 30

het grootste probleem van televisie-browsers is de bediening

Slide 31

Slide 31

navigatie (zonder muis of touchscreen)

Slide 32

Slide 32

d-pad

Slide 33

Slide 33

navigeren met de d-pad

Slide 34

Slide 34

maar het kan erger: de cursor sturen met de pijltjestoetsen

Slide 35

Slide 35

alternatieven

Slide 36

Slide 36

analoge controllers

Slide 37

Slide 37

afstandbediening met trackpad

Slide 38

Slide 38

afstandbediening met airmouse

Slide 39

Slide 39

second screen

Slide 40

Slide 40

veel fabrikanten brengen ook apps uit voor de bediening van de smart tv, console of set-top box

Slide 41

Slide 41

Slide 42

Slide 42

Slide 43

Slide 43

Slide 44

Slide 44

tekstinvoer (zonder toetsenbord)

Slide 45

Slide 45

d-pads

Slide 46

Slide 46

tekst invoeren met de d-pad

Slide 47

Slide 47

alternatieven

Slide 48

Slide 48

afstandsbedieningen met toetsenbord

Slide 49

Slide 49

draadloze toetsenborden

Slide 50

Slide 50

en wederom apps

Slide 51

Slide 51

Slide 52

Slide 52

Slide 53

Slide 53

gesture control (als een gek in de lucht zwaaien)

Slide 54

Slide 54

navigeren met gesture control

Slide 55

Slide 55

kunnen we deze invoermethodes rechtstreeks gebruiken in javascript?

Slide 56

Slide 56

de d-pad misschien

Slide 57

Slide 57

1 keyboard events window.addEventListener(“keypress”, function(e) { e.preventDefault(); // no navigation … });

Slide 58

Slide 58

de gamepad misschien

Slide 59

Slide 59

1 de gamepad api var gamepads = navigator.getGamepads(); for (var i = 0; i < gamepads.length; i++) { … }

Slide 60

Slide 60

2 wii u api window.setInterval(function() { var state = window.wiiu.gamepad.update(); … }, 100);

Slide 61

Slide 61

de webcam nee*

Slide 62

Slide 62

gestures nee*

Slide 63

Slide 63

2 het verschil tussen een televisie en een monitor

Slide 64

Slide 64

overscan (laten we het even moeilijk maken)

Slide 65

Slide 65

vanwege historische redenen laten televisies de randen van het beeld niet zien

Slide 66

Slide 66

1920 pixels het beeld dat via hdmi binnenkomt wordt door de televisie vergroot met 5%

Slide 67

Slide 67

1920 pixels het beeld dat via hdmi binnenkomt wordt door de televisie vergroot met 5%

Slide 68

Slide 68

daarna wordt het beeld bijgesneden tot 1920 bij 1080 pixels

Slide 69

Slide 69

daarna wordt het beeld bijgesneden tot 1920 bij 1080 pixels

Slide 70

Slide 70

overscan zorgt voor onscherp beeld +5%

Slide 71

Slide 71

oplossing 1 overscan-correctie

Slide 72

Slide 72

1920 pixels de browser gebruikt de randen van het beeld niet

Slide 73

Slide 73

1920 pixels het beeld zal door de televisie worden vergroot met ongeveer 5%

Slide 74

Slide 74

de inhoud is nu volledig zichtbaar, de zwarte randen zijn verdwenen

Slide 75

Slide 75

maar niet elke televisie vergroot exact 5%, dit kan per merk en model verschillen

Slide 76

Slide 76

configureer de juiste overscan-correctie in de systeeminstellingen

Slide 77

Slide 77

de playstation 4 laat in fullscreen-mode de browser altijd zonder overscan-correctie zien

Slide 78

Slide 78

de playstation 4 laat in fullscreen-mode de browser altijd zonder overscan-correctie zien

Slide 79

Slide 79

oplossing 2 geen overscan

Slide 80

Slide 80

het is soms mogelijk om overscan uit te zetten bij televisies dit heet ‘screen fit’, ‘pixel perfect’ of ‘just scan’

Slide 81

Slide 81

de playstation 3 laat de browser altijd met overscan-correctie zien

Slide 82

Slide 82

de viewport (heeft iemand aspirine bij zich?)

Slide 83

Slide 83

de visual viewport de visual viewport bepaalt welk gedeelte van de website zichtbaar is gemeten in device pixels

Slide 84

Slide 84

de visual viewport de visual viewport bepaalt welk gedeelte van de website zichtbaar is gemeten in device pixels

Slide 85

Slide 85

de visual viewport de visual viewport bepaalt welk gedeelte van de website zichtbaar is gemeten in device pixels

Slide 86

Slide 86

de layout viewport de layout viewport bepaalt de breedte in css pixels waarop de website wordt afgebeeld

Slide 87

Slide 87

de layout viewport de layout viewport bepaalt de breedte in css pixels waarop de website wordt afgebeeld

Slide 88

Slide 88

de layout viewport de layout viewport bepaalt de breedte in css pixels waarop de website wordt afgebeeld

Slide 89

Slide 89

iedere smart tv, console of set-top box heeft z’n eigen standaard layout viewport-breedte tussen 800 en 1920 css pixels

Slide 90

Slide 90

met de ‘meta viewport’ is het mogelijk om breedte van de layout viewport te veranderen fysieke device pixels device scale factor

<meta name=”viewport” content=“width=device-width”> <meta name=”viewport” content=”width=1024”>

Slide 91

Slide 91

probleem: meta viewport wordt niet ondersteund geen mogelijkheid de layout viewport gelijk te krijgen tussen verschillende browsers

Slide 92

Slide 92

probleem: device pixel ratio wordt niet ondersteund dus geen goede ondersteuning voor het tonen van afbeeldingen die bij de resolutie van het scherm passen

Slide 93

Slide 93

800 pixels nintendo wii

Slide 94

Slide 94

980 pixels nintendo wii u

Slide 95

Slide 95

960 pixels lg webos

Slide 96

Slide 96

1024 pixels google tv

Slide 97

Slide 97

1041 of 1050 pixels microsoft xbox 360

Slide 98

Slide 98

1200 of 1236 pixels microsoft xbox one

Slide 99

Slide 99

1226 pixels lg netcast

Slide 100

Slide 100

1824 pixels sony playstation 3

Slide 101

Slide 101

1920 pixels sony playstation 4

Slide 102

Slide 102

Nintendo Wii 800 LG WebOS 960 Nintendo Wii U 980 Philips 2014 series 980 Google TV 1024 Playstation TV 1024 Samsung Tizen 1024 Xbox 360 1051 Xbox One 1200 LG Netcast 1226 Panasonic Viera 1256 Opera Devices 1280 Samsung 2014 series 1280 Panasonic Firefox OS 1536 Playstation 3 1824 Playstation 4 1920

Slide 103

Slide 103

device pixels != device pixels (echt waar)

Slide 104

Slide 104

soms zijn device pixels geen fysieke device pixels, maar virtuele device pixels de browser werkt bijvoorbeeld op een lagere resolutie en wordt ge-upscaled naar de resolutie van het beeldscherm

Slide 105

Slide 105

3 afstand tot het scherm

Slide 106

Slide 106

“Make fonts and graphics on the site larger to account for viewing distance. People sit proportionally farther from a TV than from a computer monitor of the same size.” Internet Explorer for Xbox One Developer Guide https://msdn.microsoft.com/en-us/library/dn532261(v=vs.85).aspx

Slide 107

Slide 107

fluid design zorg ervoor dat de grootte van de inhoud wordt geleid door de breedte van de viewport

Slide 108

Slide 108

1 gebruik percentages voor positionering .left { width: 60%; } .right { left: 60%; width: 40%; }

Slide 109

Slide 109

2 baseer de fontgrootte op de viewport document.body.style.fontSize = ((window.innerWidth / 1920) * 300) + ‘%’;

Slide 110

Slide 110

3 of misschien viewport units – met polyfill body { font-size: 3vw; } .left { width: 60vw; height: 100vh; } .right { width: 40vw; height: 100vh; }

Slide 111

Slide 111

4 gebruik een veilige marge om de inhoud heen body { padding: 5%; }

Slide 112

Slide 112

youtube tv website

Slide 113

Slide 113

herkennen van smart tv’s (css speciaal voor televisies)

Slide 114

Slide 114

1 × css media types @media tv { body { font-size: 300%; } }

Slide 115

Slide 115

1 css media types alle televisie-browsers gebruiken css media type ‘screen’

Slide 116

Slide 116

2 × schermgrootte if (screen.width == 1920 && screen.height == 1080) { document.body.className += ” television”; }

Slide 117

Slide 117

2 schermgrootte monitoren en telefoons hebben soms hd-resoluties, televisie-browsers hebben vaak andere resoluties

Slide 118

Slide 118

3 × useragent sniffing if (navigator.userAgent.search(/TV/i) >= 0) { document.body.className += ” television”; }

Slide 119

Slide 119

3 useragent sniffing niet alle televisies zijn herkenbaar Mozilla/5.0 (X11; Linux; ko-KR) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+

Slide 120

Slide 120

4 couch mode de enige betrouwbare manier om een website voor televisie te optimaliseren is twee verschillende sites maken… of de bezoeker de mogelijkheid te geven om couch mode aan te zetten

Slide 121

Slide 121

4 wees voorzichtig met feature-detectie

Slide 122

Slide 122

alle features die praten met het besturingssysteem of de hardware zijn verdacht…

Slide 123

Slide 123

if (!!navigator.geolocation) { navigator.geolocation.getCurrentPosition( success, failure ); } 1 failure wordt aangeroepen met een “permission denied”-foutcode 2 helemaal geen callback naar success of failure

Slide 124

Slide 124

if (!!navigator.geolocation) { navigator.geolocation.getCurrentPosition( success, failure ); } 3 success wordt aangeroepen met longitude = 0 en latitude = 0 4 success wordt aangeroepen met de coördinaten van Mountain View, USA

Slide 125

Slide 125

Slide 126

Slide 126

e-readers

Slide 127

Slide 127

187 280 Kindle Touch Kobo 157 Sony Reader 0 555 52 196 Kindle 3 Pocketbook resultaten van e-readers op html5test.com

Slide 128

Slide 128

infrarood touchscherm

Slide 129

Slide 129

led’s sensors

Slide 130

Slide 130

mouse events down/up move amazon kindle touch ja pocketbook basic touch ja kobo glow ja ja sony reader ja ja touch events 1 vinger

Slide 131

Slide 131

e-ink beeldschermen (traag, trager, traagst)

Slide 132

Slide 132

microscopische balletjes die geladen zijn

Slide 133

Slide 133

microscopische balletjes die geladen zijn + – – +

Slide 134

Slide 134

microscopische balletjes die geladen zijn + – – +

Slide 135

Slide 135

microscopische balletjes die geladen zijn

Slide 136

Slide 136

Slide 137

Slide 137

misschien zijn css animaties en transitions toch niet zo’n goed idee

Slide 138

Slide 138

twee contrastrijke kleuren kunnen exact hetzelfde lijken in zwart/wit

Slide 139

Slide 139

twee contrastrijke kleuren kunnen exact hetzelfde lijken in zwart/wit

Slide 140

Slide 140

herkennen van e-readers (css voor e-ink beeldschermen)

Slide 141

Slide 141

1 × css monochrome mediaquery @media all and (monochrome) { … }

Slide 142

Slide 142

1 css monochrome mediaquery alle geteste e-readers doen net alsof ze een kleurenscherm hebben

Slide 143

Slide 143

2 useragent sniffing er is geen universele marker in de useragent-string, maar we kunnen wel individuele merken en modellen herkennen

Slide 144

Slide 144

Slide 145

Slide 145

portable consoles

Slide 146

Slide 146

66 Nintendo DSi 80 311 Nintendo 3DS New Nintendo 3DS 0 555 309 Sony PlayStation Vita resultaten van portable consoles op html5test.com

Slide 147

Slide 147

Slide 148

Slide 148

twee schermen (eigenlijk verrassend normaal)

Slide 149

Slide 149

een dubbele viewport (de onderste is de primaire visual viewport) 3d beeldscherm, maar alleen 2d wordt ondersteund in de browser resistive touch scherm

Slide 150

Slide 150

een dubbele viewport (de onderste is de primaire visual viewport) 3d beeldscherm, maar alleen 2d wordt ondersteund in de browser resistive touch scherm

Slide 151

Slide 151

een dubbele viewport (de onderste is de primaire visual viewport) 3d beeldscherm, maar alleen 2d wordt ondersteund in de browser resistive touch scherm

Slide 152

Slide 152

een dubbele viewport (de onderste is de primaire visual viewport) 3d beeldscherm, maar alleen 2d wordt ondersteund in de browser resistive touch scherm

Slide 153

Slide 153

Slide 154

Slide 154

Slide 155

Slide 155

?vreemde browsers! niels leenheer @html5test

Slide 156

Slide 156

meer weten? smart tv browsers @patrick_h_lauke console browsers @anna_debenham

Slide 157

Slide 157

meer weten? viewports en meer @ppk