سؤال

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

أود أن أفعل الشيء نفسه في تطبيق ASP.Net الخاص بي:

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

سؤالين:

  • ما هي الطريقة اللائقة لإظهار نافذة التأكيد المنبثقة قبل إلغاء تحميل الصفحة في ASP.Net؟
    أنا على علم بحدث beforeunload، لكنني لا أريد أن أجعله اختراقًا كبيرًا لجافا سكريبت.

  • لا أريد أن يبدأ التأكيد عندما ينقر المستخدم على الزر "حفظ" (الذي يحفظ الإجابات على أي حال)

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

المحلول

عليك أن تكتب الإجراء في

حدث OnBeforeUnload

أيّ الحرائق قبل تفريغ الصفحة.

<HTML>
<head>
<script>
function closeIt()
{
  return "Any string value here forces a dialog box to \n" + 
         "appear before closing the window.";
}
window.onbeforeunload = closeIt;
</script>
</head>
<body>
  <a href="http://www.microsoft.com">Click here to navigate to 
      www.microsoft.com</a>
</body>
</html>

نصائح أخرى

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

يمكنك تجربة هذا:

<button onclick="javascript:doSend()">send</button>
<button onclick="window.xbuttons +='save ';">save</button>
<button onclick="window.xbuttons +='edit';">edit</button>
<script>
   window.xbuttons = '';
   window.onbeforeunload = function(){
      if(!window.xbuttons.match(/save|edit/))
         return "Do you want to leave this page?";
   }
</script>

فيما يلي الأشياء التي يجب عليك ملاحظةها عند التنزيل:

  1. onbeforeunload سيتم إطلاق الحدث على كل (عناصر ربط) باستخدام سمة href
  2. onbeforeunload سيتم إطلاق الحدث عند تغيير موقع المستند عبر جافا سكريبت أو عن طريق تغيير عنوان URL على شريط العناوين
  3. onbeforeunload سيتم إطلاق الحدث على أي حدث يستخدم جافا سكريبت: بروتوكول زائف
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top