Débogage de l'API de changement de page après la migration

veuillez m’aider à déplacer ceci de la zone de personnalisation de l’administration du thème vers l’onglet js de l’interface d’administration :

<script type="text/discourse-plugin" version="0.8.19">
api.onPageChange(() => {
	if ( window.location.href === "https://apple.com/123" ) {
		window.location.replace( "https://dell.com/234" );
	}
});
</script>

Je regarde l’exemple de

export default apiInitializer((api) => {
  // Votre code
});

et cela a très bien fonctionné pour des choses comme api.renderInOutlet, mais je n’ai pas trouvé d’exemples mis à jour pour ce onPageChange.

Et si vous déplaciez simplement ceci :

api.onPageChange(() => {
	if ( window.location.href === "https://apple.com/123" ) {
		window.location.replace( "https://dell.com/234" );
	}
});

dans

?

ha. vous êtes sarcastique, n’est-ce pas ? oui, j’ai essayé ça immédiatement. échec.

voici ce qui a fonctionné :

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.0", (api) => {
api.onPageChange((url) => {
// url est généralement le chemin
// mais dans certains contextes, il peut s'agir d'une URL complète, nous gérons donc les deux.
const path = url?.startsWith("http") ? new URL(url).pathname : url;
if (path === "/123") {
      window.location.replace("https://dell.com/234");
}
});

Mes excuses. J’ai mal compris votre question.

Je suis curieux - quelles sont ces situations ? Je n’ai jamais vu le https dans l’url auparavant, car si ma mémoire est bonne, onPageChange est pour les chemins d’Ember.

1 « J'aime »

Bonjour, juste pour l’organisation, j’ai déplacé ceci du fil de notes de version original vers un nouveau sujet afin de garder le fil un peu plus propre et d’améliorer la visibilité. Bonne chance :+1:

Cependant, j’ai remarqué dans votre dernier exemple que vous ne vérifiez plus window.location.href. Est-ce que c’est le problème ?