استراتيجيات للحفاظ على بيانات النموذج (في إغلاق علامة التبويب/المتصفح)

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

سؤال

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

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

الخيار 1:

  • على ال window.onunload أو ربما window.onbeforeunload يستدعي الحدث مربع حوار تأكيد () واختبار أولي ما إذا كانت منطقة تسجيل المهام لديها أي نص فيها وليس فارغًا. إذا لم يكن فارغًا ، فاستدعاء window.confirm() واسأل ما إذا كان المستخدم يريد إغلاق علامة التبويب/النافذة دون حفظ السجل.

قلقي مع الخيار رقم 1 هو أنه قد يكون متطفلاً للمستخدم.

الخيار 2:

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

المحلول

إذا كان المستخدم غامضًا بما يكفي للتنقل بعيدًا قبل تقديم ما يفعلونه ، فلا ينبغي أن يمانعوا في التسلل للسؤال عما إذا كانوا يعنيون فعل شيء يبدو غبيًا على ما يبدو.

أيضًا ، يستخدم حوار تأكيد على التنقل بعيدًا ، ومعظم مستخدمي (بعض) هنا نكون ذكي جدا.

هذا هو الأسهل للاستخدام ، وربما يساعد المستخدمين أكثر.

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

نصائح أخرى

حدث Window.onbeforeunload يعمل بشكل غريب قليلاً. إذا قمت بتحديد معالج لذلك ، فسيقوم المتصفح بعرض رسالة عامة حول فقدان البيانات عن طريق التنقل بعيدًا عن الصفحة ، مع إدراج السلسلة من وظيفة المعالج في منتصف الرسالة. انظر هنا:

alt text http://img291.imageshack.us/img291/8724/windowonbeforeunload.png

إذن ما نفعله: عندما نعرف شيئًا ما على الصفحة غير محفوظ ، حددنا:

window.onbeforeunload = function(){
 return "[SOME CUSTOM MESSAGE FROM THE APP]";
}

وبمجرد أن ينقذ المستخدم ، ونعلم أننا لا نحتاج إلى إظهار الرسالة ، قمنا بتعيين:

window.onbeforeunload = null;

إنه تدخلي بعض الشيء ، لكنه أفضل من فقدان المستخدمين عن طريق الخطأ.

أود البحث عن أطر Ajax لخادم الويب/اللغات المحددة التي تستخدمها. سيسمح لك Ajax بحفظ بيانات النموذج أثناء كتابتها (على سبيل المثال ، هذه هي الطريقة التي تعمل بها مستندات Google).

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