Вопрос

Предположим, я хочу иметь ссылку или кнопку, которая, когда пользователь щелкнет по ней, закроет браузер без какого-либо диалогового окна подтверждения.

Он должен работать в Internet Explorer 6, 7, 8 и Firefox.

Это было полезно?

Решение

Я провел некоторое исследование и обнаружил, что невозможно закрыть окно / вкладку в Firefox, если это окно / вкладка не открыта через javascript или если вкладка содержит страницы истории > 1 (т. Е. Кнопка «Назад» активируется, когда вы просматриваете веб-страницы).

Способ сделать в Firefox: сначала удалите историю. Затем вы можете закрыть окно без подтверждения. Я не пробовал это решение. Я случайно прочитал несколько надежных страниц, которые описывают, как это сделать.

Решение для Internet Explorer 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.");
    }

Я знаю, что некоторые из вас могут подумать, что использование обнаружения в браузере не очень хорошая идея. Также многие считают, что заставлять пользователей закрывать окна - это плохо. Я согласен с этой идеей. Но мне просто нужно это из-за требований к программному обеспечению, которые нам говорят.

Надеюсь, это поможет.

Другие советы

Это было бы серьезным нарушением безопасности. Вы никогда не сможете сделать это.

Однако вы можете закрыть дочерние окна, которые открыли родительские окна. Скажем, вы открыли всплывающее окно с родительским окном, в этом же родительском окне может быть кнопка для закрытия дочернего элемента. Никогда не браузер.

Я думаю, что отчасти проблема заключается в том, что вы не уверены в своей цели в этом вопросе. Из вашего комментария к ответу Фрэнки кажется, что вам вообще не нужно закрывать окно, вам просто нужно защитить контент, который был доступен в окне.

Вот что я рекомендую:

<Ол>
  • Завершите сеанс, вошедший в систему, на основе времени ожидания (на стороне сервера). По истечении времени ожидания перезагрузка страницы должна перенаправляться только на страницу входа.
  • На стороне клиента периодически проверяйте условия тайм-аута и перенаправляйте на страницу входа или на другую страницу, не требующую защиты.
  • Честно говоря, обычно лучше держать пользователя на вашем сайте до того момента, пока они не захотят закрыть вкладку или иным образом отказаться от просмотра. Просто перенаправьте их на целевую страницу, которая не обязательно должна быть защищенной, вместо того, чтобы пытаться принудительно закрыть вкладку.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top