كيفية إجبار تحديث الصفحة أثناء الضغط على الزر الخلفي في Mac Safari

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

سؤال

لدي صفحات ASPX (A، B) تم إنشاؤها باستخدام ASP.NET MVC. في الملف، لدي بعض خانات الاختيار وصناديق النص.

عندما أنتقل إلى الصفحة ب ومحاولة الانتقال إلى الصفحة أ بالضغط على زر Back Back (في Mac Safari)، لا يتم تحديث الصفحة. تحتفظ الصفحة بقيمها القديمة (لصناديق الاختيار وصناديق النصر).

عندما كان لدي نقطة انقطاع في جانب الخادم. أنا قادر على الحصول على ضرب.

أنا متأكد من أن طريقة عمل خادم الخادم يسمى. هناك بعض القضايا مع متصفح Mac Safari.

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

بسيطة إلى حد ما، لكنني احصل على الإجابة الصحيحة بينما googling.

هل يمكن لشخص ما اقتراح عمل حول هذا في ماك.

شكرا ،

فيجاي

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

المحلول

لم أتحقق من ذلك، لكنني متأكد من أن سفاري ماك ليس المتصفح الوحيد للقيام بذلك. هذا بسبب الطريقة التي يعمل بها ذاكرة التخزين المؤقت للمتصفح. عندما تعود في تاريخ المتصفح، لا يطلب Safari (و Afaik Firefox أيضا) الصفحة مرة أخرى. بدلا من ذلك.

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

تعطيل ذاكرة التخزين المؤقت ل Action "A" يجب أن تفعل الخدعة، حيث يجب إجبار المتصفح للحصول على الصفحة مرة أخرى (وإعادة تعيين قيمة المدخلات). شيء من هذا القبيل:

[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult A()
{
    return View();
}

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

$(document).ready(function() {

     $('input').each( function() {
         if($(this).attr('type') == 'checkbox') { 
              this.checked=false;
         } else {
              $(this).val('');
         }
     }

})

ملاحظة: رمز غير مهتم به، ولكن آمل أن يساعد (إذا فشلت تعطيل ذاكرة التخزين المؤقت للصفحة) :)

نصائح أخرى

حاول إعداد AutoColpeTETE = "OFF" على النموذج الخاص بك

يحدث هذا أيضا إذا قمت بتحديث الصفحة على Firefox.

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