HTML5 PushState

Florian L
Florian LFuckUp Nights Paris
HTML5
PushState (dans Rails)
Oocto.com
Constat
Hier


Pages WEB Stateful
L’URL était lié à l’état
La navigation changeait l’état
Full compatible
Aujourd’hui

Utilisation massive de de Ajax
Ajax casse les états
  Fragment Stateless
  URL ne marque pas l’état
  Navigation ne fonctionne plus
Aujourd’hui

Solution:
  Hack par l’utilisation de Hashbang : #!
    https://twitter.com/#!/florian_elam
  Problèmes
    N’est pas envoyé dans l’HTTP request
    Comptabilité JS (Moteurs de recherche...)
Solution
Demain



HTML 5 History API !
History API

interface History {
   readonly attribute long length;
   readonly attribute any state;
   void go([delta]);
   void back();
   void forward();
   void pushState(data, title [, url ]);
   void replaceState (data, title [, url ]);
};
PushState

2 méthodes
  pushState
  replaceState


1 événement
  onpopstate
Compatibilité
IE   Firefox Chrome   Safari   Opera   iOS   Android

                                               2.1
6     3.6                              3.2    2.2
7      9                               4.0    2.3
8     10      17        5              4.2     3
9      11     18       5.1     11.6    5       4
10    12      19       5.2     12.0
      13      20
Librairies/Polyfill

  jQuery Address (Hashtag + pushState)
  History.js (Hashtag + pushState)
  pjax (Full pushState + Fallback)




Un polyfill est un morceau de code (ou plugin) qui fournit la
technologie qui aurait du être implémentée par le navigateur
de façon native.
Exemples
         d’implémentation
Github
  Pour le TreeView (Navigation dans les sources)


Facebook
  NewsFeed, Pages profils, etc...


Flickr
  Navigation dans les photos


Oocto
  Navigation dans les onglets des projets...
Demo
Et Rails dans tout ça ?


 Intégration facile (As usual...)
   jquery-pjax
   rack-pjax
jquery-pjax
Simple !
  Ra jouter «data-pjax-container» + une classe sur les liens

Système de fallback
Fait une requête AJAX et ensuite push
  Filtre la la balise <title>
  Filtre le conteneur
Envoi un argument «_pjax»

        render :layout => params[:pjax].blank?
rack-pjax


Middleware de 40 lignes
Seulement le titre et le conteneur sont
envoyés au client.
Conclusion

Rapide à mettre en place

60% des navigateurs compatibles
Implémentation transparente


Au lieu d’appauvrir l’expérience pour tous
on l’améliore pour certains...
Linkographie
http://danwebb.net/2011/5/28/it-is-about-the-hashbangs
https://github.com/eval/rack-pjax
https://github.com/defunkt/jquery-pjax/
http://railscasts.com/episodes/294-playing-with-pjax
http://www.w3.org/TR/html5-author/history.html#the-history-interface
https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
http://badassjs.com/post/840846392/location-hash-is-dead-long-live-html5-pushstate
http://blog.new-bamboo.co.uk/2011/2/2/degradable-javascript-applications-using-
html5-pushstate
http://www.w3.org/Provider/Style/URI.html
https://github.com/asual/jquery-address
https://github.com/balupton/history.js
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
Merci !
1 of 20

Recommended

Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2 by
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2Romain Linsolas
7K views22 slides
Aide reservation coworking Promotech by
Aide reservation coworking PromotechAide reservation coworking Promotech
Aide reservation coworking PromotechPROMOTECH CEI
848 views14 slides
Services tdah 12 mars 2013 by
Services tdah 12 mars 2013Services tdah 12 mars 2013
Services tdah 12 mars 2013cegeplimoilou
393 views6 slides
Gestion des ressources humaines (prise de notes) by
Gestion des ressources humaines (prise de notes)Gestion des ressources humaines (prise de notes)
Gestion des ressources humaines (prise de notes)Taha Can
1.2K views7 slides
L'exposition Objectif Développement à Abidjan by
L'exposition Objectif Développement à AbidjanL'exposition Objectif Développement à Abidjan
L'exposition Objectif Développement à Abidjanafd_slides
299 views6 slides
Activités quotidiennes by
Activités quotidiennesActivités quotidiennes
Activités quotidienneslauracanocelt
681 views8 slides

More Related Content

Viewers also liked

Kappersacademie by
KappersacademieKappersacademie
Kappersacademiekaarie1991
287 views8 slides
L'agruculture dans notre territoire - CRISE Comenius Projet by
L'agruculture dans notre territoire - CRISE Comenius ProjetL'agruculture dans notre territoire - CRISE Comenius Projet
L'agruculture dans notre territoire - CRISE Comenius ProjetCriseComenius
500 views23 slides
Meilleurs voeux 2014 by
Meilleurs voeux 2014Meilleurs voeux 2014
Meilleurs voeux 2014Fabienne Leucat
199 views6 slides
Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi... by
Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi...Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi...
Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi...Antoine Mercier-ame
540 views11 slides
Mots Liste1 by
Mots Liste1Mots Liste1
Mots Liste1mmebatchelor
457 views11 slides
Cours de cuisines by
Cours de cuisinesCours de cuisines
Cours de cuisinesKevin Giroux
325 views3 slides

Viewers also liked(19)

Kappersacademie by kaarie1991
KappersacademieKappersacademie
Kappersacademie
kaarie1991287 views
L'agruculture dans notre territoire - CRISE Comenius Projet by CriseComenius
L'agruculture dans notre territoire - CRISE Comenius ProjetL'agruculture dans notre territoire - CRISE Comenius Projet
L'agruculture dans notre territoire - CRISE Comenius Projet
CriseComenius500 views
Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi... by Antoine Mercier-ame
Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi...Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi...
Ame gallery bas relief d'antoine mercier -les origines de l'homme 2.0-improvi...
Media Habits Questionnaire Results by tamaragilll
Media Habits Questionnaire ResultsMedia Habits Questionnaire Results
Media Habits Questionnaire Results
tamaragilll448 views
Trabajo analisis del currículum sociología by Sergio Perez
Trabajo analisis del currículum sociologíaTrabajo analisis del currículum sociología
Trabajo analisis del currículum sociología
Sergio Perez384 views
Bacteries: le poids des nouvelles découvertes by sametmax
Bacteries: le poids des nouvelles découvertesBacteries: le poids des nouvelles découvertes
Bacteries: le poids des nouvelles découvertes
sametmax4.8K views
Planificacion grupo E Marcela Peñaherrera by Marcealex
Planificacion grupo E Marcela PeñaherreraPlanificacion grupo E Marcela Peñaherrera
Planificacion grupo E Marcela Peñaherrera
Marcealex585 views
2011 01-11 powerpointsef by Ricardo
2011 01-11 powerpointsef2011 01-11 powerpointsef
2011 01-11 powerpointsef
Ricardo386 views
Spésup, votre avenir en tête by Acadomia
Spésup, votre avenir en têteSpésup, votre avenir en tête
Spésup, votre avenir en tête
Acadomia1.8K views
Globalenvironmentalissue by alsahelschool
GlobalenvironmentalissueGlobalenvironmentalissue
Globalenvironmentalissue
alsahelschool259 views
Enquete de satisfaction 2010 by AGIRIS EIC
Enquete de satisfaction 2010Enquete de satisfaction 2010
Enquete de satisfaction 2010
AGIRIS EIC688 views
Ciudades by Architect
CiudadesCiudades
Ciudades
Architect1.3K views

Similar to HTML5 PushState

Devoxx France 2015 - Développement web en 2015 by
Devoxx France 2015 - Développement web en 2015Devoxx France 2015 - Développement web en 2015
Devoxx France 2015 - Développement web en 2015Romain Linsolas
3.1K views44 slides
La mobilité dans Drupal by
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
4.2K views67 slides
Nouveautés html5 et css3 dans internet explorer 10 by
Nouveautés html5 et css3 dans internet explorer 10Nouveautés html5 et css3 dans internet explorer 10
Nouveautés html5 et css3 dans internet explorer 10davrous
1.6K views39 slides
TD : un chat geolocalise (mashup) by
TD : un chat geolocalise (mashup)TD : un chat geolocalise (mashup)
TD : un chat geolocalise (mashup)Stéphane Rouilly
967 views19 slides
Presentation jsf2 by
Presentation jsf2Presentation jsf2
Presentation jsf2Damien GOUYETTE
6.4K views47 slides
HTML5... La révolution maintenant! by
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
985 views36 slides

Similar to HTML5 PushState(20)

Devoxx France 2015 - Développement web en 2015 by Romain Linsolas
Devoxx France 2015 - Développement web en 2015Devoxx France 2015 - Développement web en 2015
Devoxx France 2015 - Développement web en 2015
Romain Linsolas3.1K views
La mobilité dans Drupal by Adyax
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
Adyax4.2K views
Nouveautés html5 et css3 dans internet explorer 10 by davrous
Nouveautés html5 et css3 dans internet explorer 10Nouveautés html5 et css3 dans internet explorer 10
Nouveautés html5 et css3 dans internet explorer 10
davrous1.6K views
HTML5... La révolution maintenant! by CARA_Lyon
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
CARA_Lyon985 views
HTML5... La révolution maintenant! by CARA_Lyon
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
CARA_Lyon1.1K views
Présentation complète de l'HTML5 by jverrecchia
Présentation complète de l'HTML5Présentation complète de l'HTML5
Présentation complète de l'HTML5
jverrecchia149.9K views
Tour d’horizon de l’écosystème React-ien par Guillaume BESSON by La Cuisine du Web
Tour d’horizon de l’écosystème React-ien par Guillaume BESSONTour d’horizon de l’écosystème React-ien par Guillaume BESSON
Tour d’horizon de l’écosystème React-ien par Guillaume BESSON
La Cuisine du Web469 views
Jump Camp - HTML5 by chaudavid
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5
chaudavid921 views
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript by codedarmor
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
codedarmor1.9K views
Introduction aux web components by Francois ANDRE
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
Francois ANDRE343 views
Développement Web - HTML5, CSS3, APIs Web by Yoann Gotthilf
Développement Web - HTML5, CSS3, APIs WebDéveloppement Web - HTML5, CSS3, APIs Web
Développement Web - HTML5, CSS3, APIs Web
Yoann Gotthilf1.4K views
HTML5 by Neovov
HTML5HTML5
HTML5
Neovov790 views
Tableau de bord Yammer sous SharePoint 2013 by Philippe Sfeir
Tableau de bord Yammer sous SharePoint 2013Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013
Philippe Sfeir874 views
Développement Web sur iPhone (iPhone+iPad DevCamp Québec) by Rémi Prévost
Développement Web sur iPhone (iPhone+iPad DevCamp Québec)Développement Web sur iPhone (iPhone+iPad DevCamp Québec)
Développement Web sur iPhone (iPhone+iPad DevCamp Québec)
Rémi Prévost3.1K views
Symfony2 - Un Framework PHP 5 Performant by Hugo Hamon
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon3.1K views

HTML5 PushState