マイグレーション後のページ変更APIのデバッグ

テーマ管理者のカスタマイズ領域から、管理者インターフェースの js タブにこれを移動するのを手伝ってください。

<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>

私は次の例を見ています。

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

これは api.renderInOutlet の例ではうまくいきましたが、この onPageChange については、更新された例を見つけることができませんでした。

これを以下に移動したらどうなりますか。

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

に?

ha. 皮肉を言っているんでしょう?ええ、すぐに試しましたが、失敗しました。

こちらが機能したコードです。

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.0", (api) => {
api.onPageChange((url) => {
// url は通常パスですが、一部のコンテキストでは完全な URL になる場合があるため、両方に対応します。
const path = url?.startsWith("http") ? new URL(url).pathname : url;
if (path === "/123") {
      window.location.replace("https://dell.com/234");
}
});

申し訳ありません。ご質問を誤解していました。

興味深いですね。どのような状況でしょうか?onPageChangeはEmberのパス用だと記憶しているので、URLにhttpsが含まれているのを見たことがありません。

「いいね!」 1

こんにちは、整理のため、元のリリースノートのスレッドからこの投稿を新しいトピックに移動しました。これにより、スレッドが少しすっきりし、視認性が向上します。頑張ってください :+1:

しかし、後続の例では window.location.href のチェックをしなくなっていることに気づきました。それが問題でしょうか?