Предупреждение, когда окно браузера, закрытое случайно

Существуют некоторые другой / лучшие решения, уже отправленные, но для полноты, я полагал, что упомяну это:

, Если Ваше основное беспокойство является снижением производительности, и Вы смотрите верный стук , тогда Вы на самом деле имеете дело с DoS-атакой, и необходимо, вероятно, попытаться обработать его соответственно. Один общий подход должен просто отбросить пакеты от IP в брандмауэре после многих соединений во вторую/минуту/и т.д. Например, стандартный брандмауэр Linux, iptables, имеет стандартную операционную функцию соответствия 'hashlimit', который мог использоваться для корреляции запросов на установление соединения на единицу измерения времени к IP-адресу.

, Хотя, этот вопрос, вероятно, был бы более склонным для следующей ТАКИМ-ОБРАЗОМ-ПРОИЗВОДНОЙ, упомянутой на последнем ТАКИМ-ОБРАЗОМ-ПОДКАСТЕ, это еще не запустилось, таким образом, я предполагаю, что нормально отвечать:)

РЕДАКТИРОВАНИЕ:
, Как указано novatrust, существуют все еще ISPs на самом деле не присвоение дюйм/с их клиентам, так эффективно, клиент сценария такого ISP отключил бы все-клиентов от того ISP.

21
задан Jonik 13 August 2009 в 07:15
поделиться

3 ответа

Мы должны предотвратить или предупредить пользователя о том, что при выполнении этих действий он потеряет свои данные.

  1. Нажмите кнопку возврата назад в браузере.
  2. Нажмите кнопку обновления браузера.
  3. Нажмите кнопку. кнопка закрытия браузера.
  4. Щелчок по кнопке перехода вперед.
  5. Клавиатура - Alt + F4 (Закрыть)
  6. Клавиатура - F5 ] (Обновить)
  7. Рывок клавиатуры- CTRL + F5 (Обновить)
  8. Рывок клавиатуры- Shift + F5 ( Обновить)
  9. Изменение URL-адреса
  10. Или чего-либо, что вызывает обратную передачу, кроме вашей конкретной кнопки отправки.

Чтобы объяснить, что я использовал два текстовых поля, одну кнопку отправки Asp.net с идентификатором TestButton. Другие элементы управления обратной передачей, которые я использовал: Еще одна кнопка asp.net, один флажок со свойством autopostback true, один раскрывающийся список со свойством autopostback true. Теперь я использовал все эти элементы управления обратной передачей, чтобы показать вам, что нам также нужно показывать пользователю подсказку о потере данных, когда пользователь выполняет действия с этими элементами управления. При нажатии кнопки отправки мы не будем показывать подсказку, так как мы должны отправить данные с помощью этого управляющего действия. Вот пример кода. Я установил метод window.onbeforeunload для изменения элементов управления.

<html >
<head id="Head1">
    <title></title>

    <script type="text/javascript"
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

    <script type="text/javascript">
        $(function()
        {
            // Prevent accidental navigation away
            $(':input').bind(
                'change', function() { setConfirmUnload(true); });
            $('.noprompt-required').click(
                function() { setConfirmUnload(false); });

            function setConfirmUnload(on)
            {
                window.onbeforeunload = on ? unloadMessage : null;
            }
            function unloadMessage()
            {
                return ('You have entered new data on this page. ' +
                        'If you navigate away from this page without ' +
                        'first saving your data, the changes will be lost.');
            }

            window.onerror = UnspecifiedErrorHandler;
            function UnspecifiedErrorHandler()
            {
                return true;
            }

        }); 

    </script>

</head>
<body>
    <form id="form1" name="myForm" runat="server">
    <div>
        First Name :<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <br />
        Last Name :<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <br />
        IsMarried :<asp:CheckBox ID="CheckBox1" runat="server" /><br />
        <br />
        <asp:Button runat="server" ID="TestButton" Text="Submit" CssClass="noprompt-required" /><br />
        <br />
        <br />
        <br />
        <br />
        <asp:Button runat="server" ID="AnotherPostbackButton" Text="AnotherPostbackButton"
             /><br />
        <br />
        <asp:CheckBox runat="server" ID="CheckboxWhichCausePostback" Text="CheckboxWhichCausePostback"
            AutoPostBack="true" /><br />
        <br />
        DropdownWhichCausePostback<asp:DropDownList runat="server" ID="DropdownWhichCausePostback"
            AutoPostBack="true">
            <asp:ListItem Text="Text1"></asp:ListItem>
            <asp:ListItem Text="Text2"></asp:ListItem>
        </asp:DropDownList>
        <br />
        <br />
    </div>
    </form>
</body>

Выше я использовал:

$('.noprompt-required').click(function() { setConfirmUnload(false); });

What В этой строке я вызвал метод setConfirmUnload и передал false в качестве аргумента, который установит для window.onbeforeunload значение null. Это означает, что на любом элементе управления, где вы хотите, чтобы этот пользователь не запрашивался, присвойте этому элементу управления класс .noprompt-required , а остальное оставьте как есть.

23
ответ дан 29 November 2019 в 06:56
поделиться

На самом деле это не JQuery, я использую следующие функции:

function setConfirmUnload(on) {
    window.onbeforeunload = (on) ? unloadMessage : null;
}

function unloadMessage() {
    return "Are you sure you want to leave this page";
}

Затем в любое время вы можете вызвать

setConfirmUnload (true), чтобы включить подтверждение, или false, если хотите чтобы позволить им закрыть экран без предупреждения (например, если у вас есть кнопка закрытия).

23
ответ дан 29 November 2019 в 06:56
поделиться

Вы можете попробовать событие unload :

$(window).unload( function () { alert("Bye now!"); } );

http://docs.jquery.com/Events/unload

Я предполагаю, что эта очистка включена только клиент. Было бы интересно узнать природу этих «чисток».

7
ответ дан 29 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: