نحوه فعال کردن دکمه Go Back در مروگر در زمان Load بصورت Ajax
سلام خدمت همه ی عزیزان ITPRO ، من داخل پروژه ای که دارم ، صفحاتم رو به صورت ایجکسی لود می کنم داخل صفحه ی اصلیم. بنابر این دکمه ی Back مرورگر برای بازگشت به صفحاتم کاربرد نخواهد داشت (چون برای مرورگر من صفحه ی عوض نمیشه) اما کارفرما از من می خواد که قابلیت Back کردن در مرورگر وجود داشته باشه. من چجوری می تونم این قابلیت رو فعال کنم ؟
ممنون از پاسخ های خوبتون
6 پاسخ
پیشنهاد می کنم که از angularjs و قابلیت route استفاده کنی که از این قابلیت پشتیبانی می کنه.
ممنون از راهنماییتون ولی خب آوردن این پروژه تحت Angular اونم برای من که بلد نیستم یه مقداری سخته راه حله کوتاه مدت تری ندارید ؟
کاری که باید انجام بدی کار با History مرورگر هست، البته کار مشکلی هست مدیریت History و Navigation تو JavaScript، ولی میتونی از Library هایی که برای اینکار وجود داره استفاده کنی:
Maintain browser history with pages loaded dynamically by AJAX
یک راه راحت تر استفاده از state های مرورگر هستش که شما می تونی یک state رو توی مروگر push کنی و وقتی که دکمه back زده شد رویداد popstate فراخوانی می شود. و برای این که این رویداد هر بار اجرا شود هر بار که این رویداد فراخوانی شد مقدار جدیدی برای state وارد کنی برای مثال کد زیر وقتی که شما دکمه back را بزنید به شما پیغام می دهد.
jQuery(document).ready(function ($) { if (window.history && window.history.pushState) { window.history.pushState('forward', null, './#forward'); $(window).on('popstate', function () { alert('Back button was pressed.'); window.history.pushState('forward', null, './#forward'); return false; }); } });
من این کد رو تست کردم ولی هر دکمه یا لینکی زده میشه به من پیغام میده!
ممنون از دوستان
خودم از این راه استفاده کردم :
indow.onhashchange = function() { if (window.innerDocClick) { window.innerDocClick = false; } else { history.pushState("", document.title, window.location.pathname); location.reload(); } };
داخل شرط بررسی می کنیم که اگر داخل روت پروژمون بودیم کاری نکنیم و اگر نبودیم داخل History مقداری صفحه ی فعلی رو میریزیم و بعد پیج رو reload می کنیم که بنابر این دیگه داده های ایجکسی وجود ندارند پس برای کاربر به این معنیه که برگشته به صفحه ی اول.