سؤال

في هذه المرحلة لدينا معرض للصور يستخدم قيم التجزئة لتحديد الصورة المعروضة حاليًا للمستخدم، ولدعم إرسال الصفحة إلى صديق وما إلى ذلك.شيء مثل:

http://url/photos/#photo-4

عندما نقوم بتحميل الصورة المقابلة بعد النقر على الزر التالي أو السابق، نقوم بتغيير عنوان url وفقًا لمواصفات JS 1.1 باستخدام:

top.location.replace(url.url + hash);

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

في IE وFirefox، تعمل الطريقة كالسحر، لكن Safari وChrome ينشئان عنصر سجل لعنوان URL الذي تم تغييره.لقد وجدت الكثير من العينات حول كيفية إنشاء عناصر السجل عند استخدام التجزئة للتنقل بهذه الطريقة، لكنني أريد أن أفعل ذلك بالطريقة الأخرى.أي فكرة؟

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

المحلول

هذا يعمل كما هو متوقع الآن:

على سفاري [5.1.7] يعمل location.replace() كما هو متوقع - يتم استبدال عنوان URL، ولا تتم إضافة أي شيء إلى قائمة انتظار زر الرجوع، ولا تتم إضافة أي شيء إلى قائمة السجل.

على كروم [21.0.1180.82] location.replace() أمر صعب بعض الشيء - يتم استبدال عنوان URL ولا تتم إضافة أي شيء إلى قائمة انتظار زر الرجوع، ولكنه يضيف عنصرًا إلى قائمة المحفوظات.


ما يجعل هذا الأمر صعبًا هو وجود قائمتي انتظار متميزتين للمحفوظات - قائمة المحفوظات وأزرار الرجوع/الأمام.انقر مع الاستمرار على زري الخلف والأمام لرؤية قائمة الانتظار الخاصة بهم ومقارنتها بقائمة السجل.

وترتبط قائمة انتظار المحفوظات الخاصة بأزرار الرجوع/الأمام بعلامة التبويب النشطة.كما يظل سجل الزر حتى عند مسح قائمة السجل - على الأقل حتى تغلق علامة التبويب.

نصائح أخرى

ويبدو أنه لا يوجد حل في هذه المرحلة.

هل نظرت إلى تعيين التجزئة الخاصة بك باستخدام window.location.hash = newHash بدلاً من استبدال عنوان URL بأكمله؟

https://developer.mozilla.org/en/DOM/window.location

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top