إحدى المشكلات الرئيسية في التطبيقات التي تستند إلى JavaScript هي أنها تكسر الزر "رجوع". إذا قمت بتحديث محتوى على الصفحة باستخدام JavaScript بدلاً من تحميل صفحة جديدة من الخادم ، فلن يكون أي إدخال في سجل المتصفح ؛ لذلك عندما ينقر المستخدم على "رجوع" ، متوقعًا العودة إلى الحالة السابقة ، ينتهي به الأمر في الموقع السابق بدلاً من ذلك.
يعتبر السحب والإفلات طريقة رائعة للمستخدمين للتفاعل مع تطبيقات الويب الخاصة بك. ولكن ستفقد مكاسب إمكانية الاستخدام إذا بعد النقر على الوقت المستغرق في تطبيقك ، ينقر المستخدمون على الزر "رجوع" الذين يتوقعون العودة إلى الصفحة والعودة بدلاً من ذلك إلى شاشة البدء. في هذه المقالة "مرحبا! HTML5 & CSS3 ”يوضح لك Rob Crowther كيفية استخدام واجهة برمجة تطبيقات سجل HTML5 لتجنب هذا المصير.
يمكن البرهنة على المشكلة ببساطة. كل ما تحتاجه هو وظيفة تقوم بتحديث الصفحة استجابة لنشاط المستخدم:
var times = 0;function doclick() {times++;document.getElementById('message').innerHTML ='Recorded ' + times + ' clicks';}
وترميز صغير:
Click MeRecorded 0 clicks
في الحياة الواقعية ، ستقوم صفحة الويب الخاصة بك بعمل شيء أكثر تعقيدًا ، مثل جلب محتوى جديد من الخادم عبر AJAX ، ولكن تحديث بسيط يكفي لإثبات المفهوم. لنرى ما يحدث عندما يزور المستخدم الصفحة.
يمكن تحديث وظيفة doclick () للاستفادة من واجهة برمجة تطبيقات السجل. في كل مرة يتم فيها تحديث الصفحة ، سيتم أيضًا تعيين location.hash:
function doclick() {times++;location.hash = times;document.getElementById('message').innerHTML ='Recorded ' + times + ' clicks';}
تحديث التاريخ ليس سوى جزء من المشكلة ؛ تحتاج أيضًا إلى أن تكون قادرًا على تحديث حالة الصفحة لمطابقة الحالة في السجل.
نظرًا لأنك الشخص الذي يدير السجل ، فالأمر متروك لك لإدارة حالة الصفحة. من أجل تحديث صفحتك ردًا على location.hash الذي يتم تغييره ، يمكنك الاستماع إلى حدث 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 ' + times + ' clicks';}
تعد وظيفة doclick () مسؤولة الآن عن تحديث متغير الأوقات وتغيير التجزئة. حدث hashchange على كائن الإطار؛ عندما يحدث ذلك ، تحقق من وجود التجزئة. في التطبيق الحقيقي ، يجب أيضًا التحقق من أن له قيمة صالحة. بعد ذلك ، يمكنك تعيين قيمة المرات لتكون الرقم في التجزئة. وأخيرًا ، تقوم بتحديث المستند لعكس حالة الصفحة الصحيحة. دعونا ننظر في هذا الرمز الجديد:
تعتبر الخاصية location.hash وحدث hashchange المقترن مفيدًا إذا كنت تريد وضع علامة على طرق عرض معينة للتطبيق والسماح للمستخدم بالتنقل بينها. يستخدم Google Mail هذه الطريقة من خلال السماح لك بالتنقل بين البريد الوارد (#inbox) وجهات الاتصال (#contacts) والمشاهدات الأخرى - إذا كان لديك حساب Gmail ، فابحث عما يحدث لعنوان URL أثناء التنقل إلى مختلف الصفحات المختلفة ثم انقر فوق العودة.
ولكن بقدر ما تذهب معلومات الحالة ، يسمح لك التجزئة فقط بتخزين سلسلة. يمكنك ترميز كائن أكثر تعقيدًا ، لكن عنوان URL سيصبح سريعًا وسريعًا ولن يكون قابلاً للتذكر لمستخدميك. إذا كنت بحاجة إلى معلومات أكثر تعقيدًا تم تخزينها كجزء من التاريخ ، فستكون الطريقة الأفضل هي استخدام التجزؤ كمفتاح لسحب المزيد من معلومات الحالة من بعض المتاجر. على الرغم من أنه يمكنك استخدام أسلوبك الخاص في هذا الأمر ، فقد قدم HTML5 واجهة برمجة تطبيقات للقيام بذلك نيابةً عنك من خلال طريقة history.pushState () وحدث popstate. تتيح لك هذه الطرق حفظ كائن معقد وإعادة تحميله.
لقد تعلمت أن إدارة محفوظات المستعرض تسمح لك بأن تجعل زر Back يتصرف بطريقة أكثر منطقية في سياق التطبيق الخاص بك ، بينما تمنحك واجهة برمجة التطبيقات microdata إمكانية الوصول إلى المعلومات الدلالية المنظمة في محتويات الصفحة.
ما هي الاستخدامات التي تتوخاها لهذه التقنية؟ هل طورت طريقة مختلفة؟ اسمحوا لنا أن نعرف في التعليقات.