هل من الممكن الاستمرار (بدون إعادة التحميل) في حالة صفحة AJAX عبر نقرات زر BACK؟

StackOverflow https://stackoverflow.com/questions/34227

  •  09-06-2019
  •  | 
  •  

سؤال

أنا على دراية بالعديد من الطرق لجعل زر الرجوع يعمل في تطبيقات AJAX في مواقف مختلفة، لكنني لم أجد حلاً يعمل بأمان في السيناريو الخاص بي.

الصفحات التي أعمل معها هي واجهة البحث لموقع ما.يمكنك إدخال المصطلحات في مربع بحث عادي، ثم النقر فوق "اذهب وانتهى بك الأمر في صفحة نتائج البحث".يوجد في صفحة نتائج البحث عدد كبير من عناصر التحكم في واجهة المستخدم لتصفية/فرز نتائج البحث للعثور على ما تبحث عنه.قد تستغرق بعض العمليات التي يتم تشغيلها بواسطة عناصر التحكم هذه وقتًا طويلاً (نسبيًا) حتى تكتمل (على سبيل المثال.عدة ثوان).

يعد زمن الوصول هذا جيدًا في حالة قيام المستخدم بتصفية/فرز نتائجه في البداية ...هناك سبينر AJAX لطيف وما إلى ذلك ...ومع ذلك، عندما ينقر المستخدم على نتيجة بحث ثم ينقر على الزر "رجوع"، أرغب في استعادة الصفحة على الفور إلى الحالة التي كانت عليها عند النقر عليها.

يمكنني استعادة الحالات باستخدام معرفات IFRAME/الجزء كقاموس لسجل الصفحة، ولكن ما يحدث في النهاية هو أنه عندما يضغط المستخدم لأول مرة على زر الرجوع، يتم تحميل الصفحة الأولية، ثم (يعيد) إجراء استعلام AJAX للحصول على عودة حالة الصفحة، مما يؤدي إلى تشغيل قرص AJAX وانتظار آخر لعدة ثوانٍ محتملة.

هل هناك أي طريقة لا تتطلب هذا النوع من التحميل على مرحلتين للصفحة عندما يعود المستخدم إلى الصفحة عبر زر الرجوع؟

تم التعديل للإضافة:أنا متحيز لـ jquery ولكني سأكون سعيدًا بالحلول التي تعتمد على المكتبات/مجموعات الأدوات الأخرى أو التي تعتمد على جافا سكريبت المستقلة/الخام.

تم التعديل للإضافة:كان يجب أن أضيف أنني أحاول تجنب ملفات تعريف الارتباط/الجلسات لأن هذا يمنع الأشخاص من فتح نوافذ/علامات تبويب متعددة للمتصفح ومعالجة مجموعات مختلفة من نتائج البحث في نفس الوقت.

يحرر:مات، هل يمكنك توضيح الحل المقترح (تشغيل حدث تغيير الصفحة عبر معرف الجزء)؟أرى كيف سيساعد ذلك في النقرات على زر "الرجوع" عبر نفس الصفحة ولكن لا يعود إلى صفحة نتائج البحث بعد النقر على نتيجة معينة.

هل كانت مفيدة؟

المحلول

حاول استخدام التخزين المحلي هدف.هنا libs crossbrower jStorage و WEBSHIMS json-storage

نصائح أخرى

مجرد استخدام أ بسكويت.

هل قمت بالتحقيق في مدير محفوظات متصفح YUI?

هل سيكون من المفيد تشغيل حدث تغيير الصفحة باستخدام طريقة "إضافة بعض المعلومات إلى # في نهاية نهج URL".

بهذه الطريقة، لن يؤدي النقر على زر الرجوع إلى تغيير الصفحة فعليًا، ويجب أن تكون قادرًا على استعادة الحالة دون تحميل الصفحة الأولى.

استخدم شيئًا ثابتًا مرتبطًا بملف تعريف المستخدم.

تعد ملفات تعريف الارتباط والجلسات أفكارًا جيدة، ولكن يمكنك أيضًا الاحتفاظ بهذه الأشياء في قاعدة البيانات.يمنحك ذلك ميزة إضافية تتمثل في القدرة على حفظ تفضيلات التصفية الخاصة بالمستخدم عبر جلسات تصفح مختلفة. (على سبيل المثال، إذا كان يبحث عن شيء ما في المكتب ثم قرر مواصلة البحث عندما يعود إلى المنزل).

كل هذا يتوقف على مدى تعقيد المرشحات والطقس أم لا، فهو شيء تعتقد أن المستخدم سيرغب في استخدامه عبر جلسات التصفح المختلفة.

تم التعديل للإضافة:يجب أن أضيف أنني أحاول تجنب ملفات تعريف الارتباط/الجلسات لأن هذا يمنع الأشخاص من وجود نوافذ/علامات تبويب متعددة مفتوحة ومعالجة مجموعات مختلفة من نتائج البحث في نفس الوقت.

يمكنك إنشاء رمز مميز عشوائي وتعيينه لمعرف الجزء.

  • عند تحميل الصفحة الأولى، قم بإنشاء رمز مميز إذا لم يتم تعيين معرف الجزء
  • قبل الخروج، قم بتخزين جميع بيانات ajax المؤقتة في ملف تعريف الارتباط مع هذا الرمز المميز كمؤشر.
  • عند الرد، إذا كان لديك مجموعة معرفات جزء، فقم بتحميل البيانات من الرمز المميز المقابل في ملف تعريف الارتباط.
  • يمكنك أيضًا إضافة حقل "الوقت" لانتهاء صلاحية الرموز المميزة، وما إلى ذلك...

نموذج ملف تعريف الارتباط (JSON):

{"ajaxcache":[{"token":<token>,"time":<time>,"data":<data>}, ... ]}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top