مدیریت دکمه ی Back مرورگر توسط جاوا اسکریپت
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
افزونه فرم ساز آسان
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
خرید ورق گالوانیزه رنگی
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
کارگاه رویه کوبی در تهران
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
خودتان را اینجا معرفی کنید
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
در این مقاله چندین راه برای حل این مشکل بیان میکنیم.
مشکلی که داریم به راحتی قابل نمایش است، نیاز به یک تابع داریم که با فعالیت کاربر واکنش نشان بدهد :
var times = 0;
function doclick() {
times++;
document.getElementById('message').innerHTML =
'Recorded <b>' + times + '</b> clicks';
}
و همچنین کمی کد HTML مینویسیم :
<div onclick="doclick();">Click Me</div>
<div id="message">Recorded <b>0</b> clicks</div>
در پروژه های واقعی بحث کمی پیچیده تر است، برای مثال باید اطلاعات جدید را با Ajax دریافت کنید و سپس نمایش دهید اما در این مثال سعی کردیم به صورت ساده مشکلی که وجود دارد را نشان بدهیم، بیایید در یک سناریو شبیه سازی شده ببینم برای کاربر چه اتفاقی می افتد و کاربر چه احساسی پیدا میکند :
- کاربر تصمیم میگیرد که از اپلیکیشن شما استفاده کند.
- کاربر از طریق تایپ کردن آدرس شما در url یا کلیک کردن یک لینک درون ایمیل خود وارد صفحه ی شما میشود.
- کاربر مدت کوتاهی از اپلیکیشن شما استفاده میکند و احساس خوبی پیدا میکند و از نشان دادن اطلاعات چندین مرحله سپری میشود.
- کاربر تصمیم میگیرد یک مرحله به عقب برگردد، روی دکمه ی "برگشت" کلیک میکند و این لحظه فاجعه رخ میدهد، کاربر بجای اینکه یک مرحله به عقب برگردد کلا به صفحه ی قبلی برمیگردد.
تابع doclick با هر دفعه ای که اطلاعات آپدیت میشود، locaton.hash را ست میکند.
function doclick() {
times++;
location.hash = times;
document.getElementById('message').innerHTML =
'Recorded <b>' + times + '</b> clicks';
}
یک سناریوی دیگر را بررسی میکنیم، سناریو ای که میخواهیم به آن برسیم :
- کاربر به Click Me میرسد.
- قسمت url با هر کلیک کاربر آپدیت میشود، با هر کلیک "#" به انتهای url اضافه میشود.
- با کلیک روی دکمه ی back کاربر برای مثال به #2 برمیگردد و از این طریق کاربر به مرحله ی قبلی برمیگردد بدون اینکه کاملا به صفحه ی قبلی برگردد.
آپدیت کردن وضعیت صفحه
آپدیت کردن history تنها بخشی از کار است، بخش باید وضعیت صفحه را هم همانند history آپدیت کنید تا باهم هماهنگ باشند. شما کسی هستید که history را مدیریت کردید بنابراین باید بتوانید وضعیت صفحه را هم مدیریت کنید، به همین منظور میتوانیم از رویداد hashchange استفاده کنیم.
function doclick() {
times++;
location.hash = times;
}
window.onhashchange = function() {
if (location.hash.length > 0) {
times = parseInt(location.hash.replace('#',''),10);
} else {
times = 0;
}
document.getElementById('message').innerHTML =
'Recorded <b>' + times + '</b> clicks';
}
تابع doclick اکنون هم وظیفه ی آپدیت کردن times را دارد و هم وظیفه ی تغییر hash را دارد، رویداد hashchange در شی های صفحه ی وب وجود دارد، در اپلیکیشن های واقعی نیاز دارید که مقدار آن را با یک مقدار صحیح و درست پر کنید، بنابراین یک متغیر به نام times را به hash مان اضافه میکنیم، بنابراین میتوانیم صفحه ای که داریم را باتوجه به url آپدیت کنیمدر قطعه کد جدید :
- URL با کلیک کاربر آپدیت میشود.
- زمانی که کاربر روی دکمه ی "برگشت" کلیک کند، تابع onchashchange صدا زده میشود و وضعیت صفحه با URL هماهنگ میشود.
استفاده از LOCATION.HASH
خاصیت location.hash و رویداد hashchange برای زمانی که میخواهید بخش های مختلفی به برنامه ی خود اضافه کنید و کاربر باید بین آنها بگردد مفید هستند، گوگل میل از این خاصیت استفاده میکند تا شما بتوانید بین بخش های مختلف مانند inbox و contacts و قسمت های دیگر بگردید، اگر یک اکانت گوگل داشته باشید میتوانید این عملیات را مشاهده کنید، همچنین به URL و تغییراتی که در آن ایجاد میشود هنگامی که بین بخش های مختلف gmail میگردید نگاه کنید.Hash میتواند یک رشته ذخیره کند، بنابراین میتوانید آن را پیچیده تر کنید اما دقت داشته باشید که URL هم به همان میزان دچار پیچیدگی خواهد شد و برای کاربرانتان غیرقابل فهم خواهد شد، اگر نیازدارید که اطلاعات پیچیده تری را ذخیره کنید میتوانید از API ای که در HTML5 وجود دارد استفاده کنید، در این API با استفاده متد history.pushState میتوانیم این کارها را انجام دهیم، با استفاده از این متد میتوانید شی های پیچیده تری را ذخیره و بازیابی کنیم.
نظرات و سوالات کاربران
من ی صفحه وب طراحی کردم ک تماما با ایجکس از پایگاه داده اطلاعات رو میخونه و بعد از این که روی هر قسمت کلیک میشه به یک صفحه داخلی وارد میشیم ولی بعد از بازگشت به صفحه قبل صفحه دوباره بارگزاری و به اول صفحه میایم من میخام ک به همان قسمت صفحه که بودیم برگردیم باید چیکار کنم میشه راهنمایی کنید.