どうもスマホでは対応状況がバラバラみたいだということに気がつきました。
そこで、とりあえず手軽にpushStateに対応しているかどうかを確認するためのスクリプトをメモしておきます。
$(document).ready(function() { if ('pushState' in history){ alert(1); location.hash = "#good"; } else { alert(2); location.hash = "#bad"; } });
困ったことに、Androidの標準ブラウザはpushStateに対する対応状態がバラバラみたいです。
今のところ、Ajaxを使いながら履歴を残す処理をするなら、ブラウザ別に処理を分けた方がいいように感じます。