Die Seite-Änderungs-API nach der Migration debuggen

Bitte helfen Sie mir, dies aus dem Bereich in der Theme-Admin-Anpassung in die JS-Registerkarte in der Admin-Oberfläche zu verschieben:

<script type="text/discourse-plugin" version="0.8.19">
<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>

Ich schaue mir das Beispiel an:

export default apiInitializer((api) => {
  // Ihr Code hier
});

und das hat bei api.renderInOutlet gut funktioniert, aber für dieses onPageChange konnte ich keine aktualisierten Beispiele finden.

Was wäre, wenn Sie das einfach hierhin verschieben würden:

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

in

?

ha. Sie machen sich doch lustig, oder? Ja, das habe ich sofort versucht. Fehlgeschlagen.

Hier ist, was funktioniert hat:

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.0", (api) => {
api.onPageChange((url) => {
// url ist typischerweise der Pfad
// aber in manchen Kontexten kann es eine vollständige URL sein, daher behandeln wir beides.
const path = url?.startsWith("http") ? new URL(url).pathname : url;
if (path === "/123") {
      window.location.replace("https://dell.com/234");
}
});

Entschuldigung. Ich habe Ihre Frage missverstanden.

Ich bin neugierig – was sind diese Situationen? Ich habe das https in der URL noch nie gesehen, weil onPageChange sich, wenn ich mich recht erinnere, auf Ember-Pfade bezieht.

1 „Gefällt mir“

Hallo, nur zur allgemeinen Ordnung habe ich dies aus dem ursprünglichen Thread der Versionshinweise in ein neues Thema verschoben, um den Thread etwas aufgeräumter zu halten und die Sichtbarkeit zu verbessern. Viel Glück :+1:

Allerdings habe ich in Ihrem späteren Beispiel bemerkt, dass Sie window.location.href nicht mehr überprüfen. Ist das das Problem?