افضل تمرين:كيفية التعامل مع التزامن بين المتصفح وملاحة موقع الويب

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

  •  09-06-2019
  •  | 
  •  

سؤال

إنها مشكلة معروفة لكل مطور ويب.بقدر ما حاولت إيجاد حل جيد لهذه المشكلة - لم يكن هناك حل (أو على الأقل لم أتمكن من العثور عليه).

لنفترض ما يلي:

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

استخدمنا إطار عمل الدعامات وقمنا بتخزين عنوان URL الخلفي في نماذج - في بعض الأماكن، حيث كنا بحاجة إلى عنوان URL خلفي - تم تقديم هذا من عنوان URL الخلفي لهذا النموذج.لأنه لم يكن هناك سوى حقل واحد لهذه المعلومات، وبالتالي لم يكن من الممكن العودة عدة خطوات إلى الوراء.

عند تغيير "تدفق الدعامات" - مما قد يؤدي إلى استخدام ملف شكل مختلف - سيتم فقدان هذه المعلومات.

إذا تجرأ المستخدم على وضع ملف إشارة مرجعية في مكان ما داخل تطبيق الويب الخاص بك - ربما لم يتم تعيين هذه المعلومات مطلقًا، ومرة ​​أخرى ستكون النتيجة إما غير متوقعة أو غير مرنة بدرجة كافية!

بلدي الحل":

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

في أي صفحة داخل تطبيق الويب، حيث يتعلق الأمر بالتنقل الخلفي، استخدمت علامة ذاتية الصنع تعرض محتوى المكدس في عنوان url.

وهذا كل شيء.عندما تم النقر على عنوان URL الخلفي هذا، تم ملء المكدس بالمحتوى من عنوان URL الخلفي الذي نقر عليه المستخدم (والذي يحتفظ بجميع المعلومات من المكدس بمجرد عرض الرابط الخلفي).

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

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

إذن ما هي حلولك لهذه المشكلة؟

هتافات،

مانا

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

المحلول

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

أخشى أنني لا أفهم حقًا سبب ضرورة الاحتفاظ بكل هذه الحالة لكل مستخدم:من الناحية المثالية، يجب أن يتبع الويب مبدأ الراحة ويكون عديم الجنسية تماما.لذلك، يجب أن يحدد عنوان URL الواحد موردًا واحدًا، دون الحاجة إلى الاحتفاظ بسجل التنقل لكل مستخدم.

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

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