تنظیم امکان بازگشت و رفتار دکمه بازگشت در اپسان
مقدمه
در این راهنما، به نحوهی مدیریت رفتار دکمه بازگشت در اپسان وب پرداخته میشود. اپسان وب به توسعهدهندگان اجازه میدهد تا امکان بازگشت و عملکرد دکمه بازگشت را سفارشی کنند و یا از رفتار پیشفرض آن استفاده کنند.
استفاده از رفتار پیشفرض
رفتار پیشفرض اپسان بر اساس تعداد صفحات موجود در تاریخچه عمل میکند:
- بسته شدن اپلیکیشن: اگر تعداد صفحات موجود در تاریخچه ≤ 1 باشد، اپلیکیشن بسته میشود.
- بازگشت به صفحه قبلی: اگر تاریخچه بیشتر از 1 صفحه داشته باشد، به صفحه قبلی بازمیگردد. در صورت تعریف
customBackHandler
، این تابع به جای رفتار پیشفرض اجرا میشود.
پاک کردن تاریخچه
برای پاک کردن تاریخچه و تنظیم تعداد صفحات موجود، میتوانید از تابع پیشفرض clearBackStack
استفاده کنید:
AppsanWeb.getAvailableHistoryCountProvider()?.clearBackStack();
قابلیت customBackHandler در AppsanWeb
- تعریف customBackHandler: این متغیر میتواند تابع شما را ذخیره کند که هنگام فشار دادن دکمه بازگشت اجرا میشود.
- متد setCustomBackHandler: برای تنظیم تابع سفارشی استفاده میشود:
AppsanWeb.setCustomBackHandler(() => { // handle back here your way });
توجه: هنگام استفاده از تابع سفارشی، رفتار پیشفرض اجرا نمیشود و میتوانید با اکشن app/forceback
بازگشت انجام دهید.
سفارشیسازی امکان بازگشت
برای تعریف رفتار خاص بازگشت، یک کلاس جدید از رابط AvailableBackCountProvider
پیادهسازی کنید. این رابط شامل متدهای زیر است:
getAvailableHistoryCount()
: تعداد صفحات موجود را برمیگرداند.clearBackStack()
: تاریخچه را پاک و بازنشانی میکند.
نمونه: غیرفعال کردن بازگشت و بستن مینیاپ
import { AppsanWeb, AvailableBackCountProvider } from "./AppsanWeb";
export class DisableBackAndCloseProvider implements AvailableBackCountProvider {
getAvailableHistoryCount(): number { return 1; }
clearBackStack(): void {}
}
با بازگرداندن ۱ در getAvailableHistoryCount()
، بازگشت غیرفعال و مینیاپ بسته میشود.
نمونه پیادهسازی ارائهدهنده سفارشی تأیید قبل از بازگشت
import { AppsanWeb, AvailableBackCountProvider } from "./AppsanWeb";
export class ConfirmableBackCountProvider implements AvailableBackCountProvider {
private availableHistoryCount = 1;
constructor() {
const self = this;
(function (h: any) {
const push = h.pushState;
h.pushState = function(state: any) {
self.onPushState(); return push.apply(h, arguments);
};
})(window.history);
window.addEventListener("popstate", () => this.onPopState());
AppsanWeb.setCustomBackHandler(() => this.showConfirmationDialog());
}
onPushState() {
this.availableHistoryCount++;
(AppsanWeb as any).instance.post((AppsanWeb as any).MESSAGE_TYPE_AVAILABLE_HISTORY_COUNT, this.availableHistoryCount);
}
onPopState() {
this.availableHistoryCount--;
(AppsanWeb as any).instance.post((AppsanWeb as any).MESSAGE_TYPE_AVAILABLE_HISTORY_COUNT, this.availableHistoryCount);
}
getAvailableHistoryCount(): number { return this.availableHistoryCount; }
clearBackStack(): void {
this.availableHistoryCount = 1;
(AppsanWeb as any).instance.post((AppsanWeb as any).MESSAGE_TYPE_AVAILABLE_HISTORY_COUNT, 1);
}
private showConfirmationDialog(): void {
if (confirm("آیا مطمئن هستید میخواهید بازگشت کنید؟")) history.back();
}
}
نحوه استفاده
- نمونه سازنده را بسازید:
const backHandler = new ConfirmableBackCountProvider();
- کلاس بهطور خودکار
customBackHandler
را تنظیم میکند.
No Comments