A classer dans les catégories "Je ne peux pas croire que personne ne l'ait remarqué avant" ou "Je dois manquer quelque chose" :
Il semble que si vous effectuez une simple window.history.pushState
sur iOS, la barre de localisation n'est pas mise à jour à moins qu'elle ne réponde à un geste de l'utilisateur. L'état lui-même est poussé (comme vous pouvez le voir en appuyant sur le bouton "retour").
Voici le plus petit cas de test que j'ai pu trouver pour recréer le problème :
http://thelink.is/history-api-ios-bug
Sur un navigateur de bureau qui prend en charge l'API Historique, vous devriez voir l'URL dans la barre d'adresse se transformer en /0, /1, etc. toutes les secondes. Sur iOS - testé sur iPhone (iOS 4.3) et iPad (iOS 4.3.3) - la barre d'adresse n'est pas mise à jour, mais le fait d'appuyer sur le bouton "retour" vous ramène à l'adresse précédente correcte (qui est 404 dans le cas de test, car il n'y a pas de logique d'arrière-plan pour gérer ces URL).
Réflexions ? Solutions de rechange ? Une épaule pour pleurer et des câlins ?
MISE À JOUR : ce problème a été résolu dans iOS 5.