سؤال

لنفترض أنني أريد الحصول على رابط أو زر يقوم المستخدم بالنقر فوقه بإغلاق المتصفح دون أي مربع حوار للتأكيد.

يجب أن يعمل في Internet Explorer 6 و7 و8 وFirefox.

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

المحلول

لقد أجريت بعض الأبحاث واكتشفت أنه ليس من الممكن إغلاق النافذة/علامة التبويب في Firefox إذا لم تكن هذه النافذة/علامة التبويب مفتوحة من خلال جافا سكريبت أو إذا كانت علامة التبويب تحتوي على صفحات محفوظات> 1 (أي.زر الرجوع قابل للنقر عليه لأنك تتصفح صفحات الويب).

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

الحل لإنترنت إكسبلورر 6، 7، 8.

مع القليل من المساعدة من وظيفة الكشف عن المتصفح: http://www.quirksmode.org/js/detect.html إليك كيفية إغلاق النافذة بدون مربع التأكيد لإصدارات IE المتعددة.

if ((userBrowser.browser == "Explorer" && (userBrowser.version == "8" || userBrowser.version == "7"))) {
        window.open('', '_self', '');
        window.close();
    } else if ((userBrowser.browser == "Explorer" && userBrowser.version == "6")) {
        window.opener = null;
        window.close();
    } else {
        window.opener = '';
        window.close(); // attempt to close window first, show user warning message if fails
        alert("To avoid data corruption/loss. Please close this window immedietly.");
    }

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

أتمنى أن يساعدك هذا.

نصائح أخرى

وهذا من شأنه أن يشكل خرقا أمنيا كبيرا. وأنك لن تكون قادرة على القيام بذلك.

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

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

وهنا ما أوصي به:

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

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

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