history.pushState
(Firefox 4, Chrome, Opera 11.5, IE 10)
<?php
header("Vary: X-Requested-With");
if ($_SERVER["HTTP_X_REQUESTED_WITH"] != "XMLHttpRequest") {
// tady bude společná hlavička opakující se na všech stránkách
echo "<div id='content'>\n";
register_shutdown_function(function () {
echo "</div>\n";
// tady bude společná patička
});
}
?>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
// zjednodušeno
if (history.pushState) {
$('a[href]').live('click', function () {
var href = $(this).attr('href');
$('#content').load(href);
history.pushState('', '', href);
return false;
});
onpopstate = function (event) {
$('#content').load(location.href);
}
}
</script>
!/:|^#/.test(href)
event.button || event.ctrlKey || event.shiftKey || event.altKey || event.metaKey
scrollTo(0, 0)
pageYOffset
onpopstate
i při prvním stažení
active = true
xhr.readyState == 3
X-AJAX-Title
<title>
loader.toggle()
$(window).blur(function () {
favicon.attr('href', 'loader.gif').replaceWith(favicon)
});
xhr.abort()
$('body').keydown(function (event) {
if (event.keyCode == 27 // Esc
&& !(event.ctrlKey || event.shiftKey || event.altKey || event.metaKey)
) {
xhr.abort();
}
});
status == 'success'
history.pushState({ cache: html }, title, url)
$('.no-ajaxify').live('click', function () {
location.href = this.href;
return false;
});
$[form.method](form.action, $(form).serialize())
history.pushState({ post: data }, title, url)
!$('input:file[value]').length
X-AJAX-Redirect
$(context).ajaxify('#target')