تصحيح أخطاء واجهة برمجة تطبيقات تغيير الصفحة بعد الترحيل

الرجاء المساعدة في نقل هذا من منطقة تخصيص سمة المشرف إلى علامة التبويب js في واجهة المشرف:

<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) => {
  // الكود الخاص بك
});

وقد نجح هذا بشكل رائع مع شيء مثل api.renderInOutlet ولكن onPageChange هذا ليس له أمثلة محدثة يمكنني العثور عليها.

ماذا لو قمت فقط بنقل هذا:

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

إلى

؟

ها. أنت تسخر، أليس كذلك؟ نعم، لقد جربت ذلك على الفور. فشل.

إليك ما نجح:

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");
}
});

أعتذر. لقد أسأت فهم سؤالي.

أنا فضولي - ما هي هذه الحالات؟ لم أر قط https في عنوان URL من قبل، لأنه على حد علمي onPageChange مخصص لمسارات Ember.

إعجاب واحد (1)

مرحباً، فقط كإجراء تنظيمي قمت بنقل هذا من سلسلة ملاحظات الإصدار الأصلية إلى موضوع جديد للحفاظ على السلسلة أكثر ترتيباً ولتحسين الرؤية. حظاً سعيداً :+1:

ومع ذلك، لاحظت في مثالك اللاحق أنك لم تعد تتحقق من window.location.href. هل هذه هي المشكلة؟