تتبع عندما يضغط المستخدم على زر الرجوع في المتصفح

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

  •  09-06-2019
  •  | 
  •  

سؤال

هل من الممكن اكتشاف متى ينقر المستخدم على زر الرجوع في المتصفح؟

لدي تطبيق Ajax وإذا كان بإمكاني اكتشاف الوقت الذي ينقر فيه المستخدم على زر الرجوع، فيمكنني عرض البيانات المناسبة مرة أخرى

أي حل باستخدام PHP، يفضل JavaScript.الحل بأي لغة أمر جيد، فقط أحتاج إلى شيء يمكنني ترجمته إلى PHP/JavaScript

يحرر:قص ولصق من الأسفل:

واو كلها اجابات ممتازةأرغب في استخدام Yahoo ولكنني أستخدم بالفعل مكتبات Prototype وScriptaculous ولا أرغب في إضافة المزيد من مكتبات ajax.لكنه يستخدم إطارات iFrames مما يعطيني مؤشرًا جيدًا لكتابة الكود الخاص بي.

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

المحلول

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

قد ترغب أيضًا في عرض المصدر على شيء مثل Gmail ومعرفة كيفية القيام بذلك.

هنا مكتبة لنوع الشيء الذي تبحث عنه بالمناسبة

نصائح أخرى

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

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

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

تتمتع مكتبة واجهة مستخدم Yahoo، وهي مكتبة JS المفضلة لدي من جانب العميل، بميزة ممتازة مدير تاريخ المتصفح هذا يفعل بالضبط ما تطلبه.

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

فقط ضع ما يلي داخل علامة جسمك.أضع الألغام مباشرة قبل علامة النهاية.

<input type="hidden" id="needs-refresh" value="no">
<script>
    onload=function(){
        var e = document.getElementById("needs-refresh");
        if (e.value === "yes")
            location.reload();
        e.value = "yes";
    }
</script>

قمت بتعيين متغير $wasPosted في $_SESSION مع القيمة false.

جميع مشاركاتي تمر عبر نفس ملف php، ويتم تعيينها $wasPosted ل true.

الجميع header(location:) الطلبات مسبوقة بالإعداد $wasPosted ل true.

لو $wasPosted يكون false ثم تم تحميل الصفحة بعد استخدام الأزرار الخلفية أو الأمامية.

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

هنا صفحة المستندات لديهم: http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo

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