2015-04-02 1 views
1

Я использую метод window.onbeforeunload, чтобы показать подтверждение, если пользователь покидает сайт.Fire onbeforeunload только для оповещения только для внешних сайтов

window.onbeforeunload = function(e) { 
    return textMsg; 
}; 

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

Итак, как отменить это подтверждающее сообщение для всех XHR внутри того же домена и отправить форму и т. Д.?

+0

Возможный дубликат сообщения [OnUnload, необходимого для внешних ссылок] (http://stackoverflow.com/questions/2921206/onunload-message-needed-for-external-links) – KyleMit

ответ

1

Try (непроверенный код):

window.onbeforeunload = function(e) { 
    return textMsg; 
}; 

$('a:not([href^="http"])').on('click', function() { 
    window.onbeforeunload = null; // prevent message 
}); 

$('form').on('submit', function() { 
    window.onbeforeunload = null; // prevent message 
}); 

Это позволит предотвратить событие от запуска, если ссылки не начинаются с http (внешние ссылки) и <form> ПРЕДСТАВЛЯЕТ. Ищете решение для закрытия окна на данный момент.

+0

как насчет использования window.location? Он тоже не должен появляться. – vickk

+0

Что вы бы описали? – D4V1D

+0

Я использую как ссылки, так и window.location для перенаправления на URL-адрес ответа. И если я выбираю элементы byTagName, то метод href возвращает полный URL-адрес с http – vickk

Смежные вопросы