[Jquery] Заменить стандартный обработчик onbeforeunload

Тема в разделе "Другие языки", создана пользователем dandandan, 3 сен 2011.

Модераторы: Цукер
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    PHP:
    $(document).ready(function() {
      $(
    'body').attr('onbeforeunload',"return 'Leaving this page will cause any unsaved data to be lost.';");
    });
    Нужно заменить стандартный обработчик. При клике по ссылке вылазиет стандартное виндовое окно с вопросом: "Хотите ли вы уйти с этой страницы ?" и 2 варианта ответа ДА / НЕТ.
    Можно ли как-нибудь вместо этого обработчика выдавать свой всплывающий ДИВ ? Можно не Jquery, а javascript
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Браузер когда показывает стандартное виндовое окно то останавливается и ждёт действий от пользователя (да или нет), а если делать через дивы то ничто браузер не остановит и сразу уйдёт со страницы. Так что если див и будет показыватся, то его никто не заметит. Как вариант для переходов по ссылкам, после загрузки страницы искать внешние ссылки и для них показывать свой div.
    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Selector</title>
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        <script language="javascript" type="text/javascript">
    $(document).ready(function() {
        $('a').each(function(index){
            //для ссылок начинающихся с http:
            if($(this).attr('href').search(/http:/i)==0){
                $(this).click(function() {
                    //покажем div
                    $('#alert').show();
                    //возьмём ссылку куда перейти
                    $('#alert #link').val($(this).attr('href'));
                    //вопрос для div
                    $('#alert #content').html('Перейти на '+$(this).attr('href')+'?');
                    //обработка да, нет
                    $('#alert #alert_yes').unbind().click(function(){
                        location.href = $('#alert #link').val();
                    });
                    $('#alert #alert_no').unbind().click(function(){
                        $('#alert').hide();
                    });
                    return false;
                });
            }
            
        });
    });
        </script>
    
    </head>
    
    <body>
        <div id="alert" style="display:none;">
            <div id="content"></div>
            <input type="hidden" value="" name="link" id="link" />
            <div id="alert_yes" style="cursor:pointer;">Да</div>
            <div id="alert_no" style="cursor:pointer;">Нет</div>
        </div>
        <a href="http://www.example.com">example</a>
        <a href="http://www.google.com">google</a>
        <a href="onbeforeunload.html">локальная ссылка</a>
    </body>
    </html>
    
    
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Задача именно отрубить браузерный обработчик ухода со страницы и показать свой. Для той же самой функции предопределенной функции onbeforeunload.