Je soumets un...
Comportement actuel :
Salut les gars.
Après une discussion dans un PR que j'ai créé pour corriger une erreur dans le service $location pour l'URL qui contient des apostrophes, @gkalpak remarque que les apostrophes
voir le PR pour plus de détails. https://github.com/angular/angular.js/pull/16098
Comportement attendu / nouveau :
l'URL non décodée et décodée devrait fonctionner avec le service $location
Version angulaire : 1.x.
Navigateur : tous
Rien d'autre:
Comment le réparer
Dans src/ng/browser.js il y a une fonction fireStateOrUrlChange qui a cette validation
if (lastBrowserUrl === self.url() && prevLastHistoryState === cachedState) {{
revenir;
}
Le principal problème semble être que nous comparons self.url() à lastBrowserUrl, mais lastBrowserUrl peut être défini à partir de différentes sources, pas toujours avec le même encodage/décodage
@gkalpak, vous voulez dire (à partir de votre commentaire ) faire quelque chose comme url = urlResolve(url).href
dans $browser.url
ou changer tous les appels en $browser.url(val)
pour être cohérent ? L'ajout du urlResolve
semble fonctionner, même si quelques tests ont été modifiés (certaines URL se terminent désormais par /
).
@jbedard , je n'ai pas réfléchi aux détails de l'implémentation. Je parlais du résultat final :grin:
@dmartres pouvez-vous confirmer s'il s'agit toujours d'un problème dans la 1.7.3 ? Je pense que aee7d53a6b5d3d7bc0a1124fd3df9b263777e72e (correction #16592) a peut-être corrigé cela?
Nous avons partiellement corrigé ce problème en utilisant le navigateur <a href>
pour normaliser les URL dans quelques domaines clés (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0, https://github.com/ angular/angular.js/commit/2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). Cependant aucun navigateur ne normalise tout avec cette méthode. Pour vraiment résoudre ce problème, nous aurions besoin de mettre en œuvre la normalisation nous-mêmes.
J'ai implémenté un POC pour effectuer cette normalisation manuellement, mais nous avons décidé que c'était un changement trop important à ce stade. Pour info, 15 des tests ajoutés dans ce commit échouent actuellement dans Chrome.
Pour ces raisons, nous allons mettre cela dans un état "ne répare pas".
Commentaire le plus utile
Nous avons partiellement corrigé ce problème en utilisant le navigateur
<a href>
pour normaliser les URL dans quelques domaines clés (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0, https://github.com/ angular/angular.js/commit/2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). Cependant aucun navigateur ne normalise tout avec cette méthode. Pour vraiment résoudre ce problème, nous aurions besoin de mettre en œuvre la normalisation nous-mêmes.J'ai implémenté un POC pour effectuer cette normalisation manuellement, mais nous avons décidé que c'était un changement trop important à ce stade. Pour info, 15 des tests ajoutés dans ce commit échouent actuellement dans Chrome.
Pour ces raisons, nous allons mettre cela dans un état "ne répare pas".