Making AJAX User Friendly, Google Friendly, Friendly Friendly using the History API
1. MAKING AJAX USER
FRIENDLY, GOOGLE
FRIENDLY, FRIENDLY
FRIENDLY USING THE
HISTORY API
Winchester Studio. 6061 High Street. Winchester. Hampshire. SO23 9BX. SIT BACK /
SIT BACK
London Studio. 1 The StableYard. 16a Balham Hill. London. SW12 9EB.
LISTENUP
LISTEN UP
T. +44 (0) 20 3137 1469
F. +44 (0) 845 862 0706
info@marmaladeontoast.co.uk
www.marmaladeontoast.co.uk
2. HI, I’M
SYDLAWRENCE
I’M AFRAID OF HEIGHTS
sydlawrence.com
@sydlawrence
github.com/sydlawrence
fb.com/sydlawrence
tumblr.com/sydlawrence
SIT BACK /
SIT BACK
skype:sydlawrence LISTENUP
LISTEN UP
you get the picture
3. WHAT
IS IT?
SIT BACK /
SIT BACK
LISTENUP
LISTEN UP
http://www.flickr.com/photos/pixelthing/2555047998/
I’m sydlawrence\n afraid of heights\n lead developer at Marmalade\n part time lecturer at Winchester Uni on the Digital Media Development Course\n love the future\n Going to talk about the new History API available in all decent browsers\n will also cover mistakes made by developers with ajax\n\n
What is it?\n You, you guessed it, it is part of the ‘html5’ spec\n\n
HTML5\n but of course it is javascript... That discussion is certainly for another time...\n One of the many new javascript toys available in the HTML5 spec\n DeviceOrientation\n GeoLocation\n LocalStorage\n\n
Javascript Object\n basically window.history is a javascript object\n It has been available for a long time\n window.history.back\n a couple of NEW tools\n\n
What is the problem?\n Why do we need window.history\n\n
Ajax loads new content\n out with the old, in with the new... \n that content is dynamically generated.. \n google doesnt see that content... \n unless you use a link for google to spider.\n\n
Back button\n People press the back button all the time... \n Much more than I ever thought... \n The amount of times I have seen people get confused by pressing back, and then leaving a site..\n One of the horrendous issues with Flash...\n USER FRIENDLY\n\n
Copy & Paste\n Same, same\n People like to share urls...\n GOOGLE FRIENDLY\n They will share the wrong url!\n think ow.ly\n Dont make people confused the first time they click on a link to get to your site...\n First time visitors...\n Treat them with honour, with diginity, intice them back for more...\n\n
Surely this isn’t new\n This isn’t a new problem.. this wasn’t a problem first discovered in the last six months\n Nope\n People like to find solutions\n\n
location.hash\n There has been an interesting solution, using location.hash\n javascript can modify the hash location of the url...\n i.e. adding a # on the end followed by a string..\n\n
if it ain’t broke\n don’t fix it\n BUT there are issues\n\n
always felt like a hack\n always was a hack... location.hash was not meant for that kind of thing (with regards to ajax, hidden content maybe, but not modified content)\n\n
requires javascript on reload\n If you send a link to someone with the hash location... the new user needs javascript for that to take affect...\n OK, ignore lack of javascript...\n What about Google... Your javascript on reload is to populate with the new ajaxed content\n\n
run through example\n www.example.com/old/#/new\n visit old\n www.example.com/old/\n click something\n www.example.com/old/#/new\n share link\n www.example.com/old/#/new\n old static content, then javascript needs to get the new\n\n
What does it do?\n History stack, that behaves in the same way a simple array would\n\n
Adds to the history books\n push on to the stack\n\n
Back to the Future\n popstate event when they press forwards\n\n
When Would This be useful\n When the content changes...\n When someone might want to share the content\n back button\n copy paste\n\n
Lightboxes\n Images..\n videos\n\n
Popup logins\n more and more sites use this\n what if they fail to login and want to try again\n\n
Comments\n pages\n\n
Pagination\n pages\n\n
Browser Support\n Remember, this is still bleeding edge\n\n
Firefox\n introduced in gecko 2\n firefox 4 \n\n
Chrome\n WebKit 528\n Live version \n\n
Safari\n Also uses webkit\n Live version \n\n
Opera\n Not as yet\n\n
Internet Explorer\n Not as yet\n\n
How do you use this wonderful thing?\n run through workflow\n same ajax mistaked\n\n
Click event on link\n Always do this for ajax content... to the same url that you would without javascript\n ALWAYS\n\n
render differently on ajax requests\n Don’t have different urls..\n\n
history.pushState\n this is used to add to the history\n history.pushState(StateObj,title,url)\n local domain url\n StateObj is anthing you might want to retreive later\n \n There is also replaceState that operates in the same way, but it replaces the current state\n
listen for event\n when someone presses back or forward..\n\n
USER Friendly\n\nBack / forward button\nSharing Links\n
Google Friendly\n\n\nindexable content\n
Friendly friendly\n\nIts not even hard to do!\n
Want to know more\n\nMozilla Developer Network\nHTML5 Spec\nMy Fancy-box fork on github\n
Any Questions?\n\n\n\nHow to check in browsers\ncheck to see if the pushstate function exists\n\nwindow.onpopstate = function (evt) {}\nhistory.pushState(StateObj,title,url);\n