By the end of 2011 Google indexs comments loaded via AJAX (i.e. Facebook, Disqus, …).
https://developers.google.com/webmasters/ajax-crawling/docs/specification this is the last specs, that means (reading https://developers.google.com/webmasters/ajax-crawling/docs/html-snapshot) that the web server must provide a snapshot of the requested page and it should do someway.
var data = null;
var title = 'view video';
var url = '/listvideo/video1';
this snippet replace the url in address bar, then it could be followed by code to inject html with video tag loaded via AJAX. Let say the video is loaded in a layer and the close cross is clicked then click handler will do another history.pushState(), remove the layer and user will see the list of video again, while using the browser bar back button it goes back in the history. Cool, doesn’t? … a moment, for back to function it is needed an event’s handler, something like:
// location.pathname contains the new current path
// location.data contains the passed data
For browsers that do not support the new history api, snippet contents have to be loaded every time and everytime AJAX should fill it: the server provide the base page, a check is done on location.href and the right content loaded via AJAX (i.e. showPage(location.href)). It is vital for SEO prospective that pushState url matches the href of clicked element. (an intrusive example to show it: <a href=/url/video1/ onclick=action> then action() must call pushState with url=/url/video1)
No more snapshot due by server, all is managed by search engines, Bing and Google agree on this: client side code are executed before indexing.
From a SEO prospective: HTML5? use it.