ссылка mailto (в chrome) запускает window.onbeforeunload - могу ли я предотвратить это?

Возможно, связано с Как открыть ссылку mailto в Chrome с помощью Window.open без создания новой вкладки?

Привет всем. У меня есть страница формы, на которой я поместил подтверждение window.onbeforeunload, чтобы люди не уходили и случайно не теряли свои изменения:

window.onbeforeunload = function(){
  if(changed)
    return "You have unsaved changes.  Do you really want to leave this page without saving?";
};  

, где change— это переменная, для которой я устанавливаю значение true всякий раз, когда пользователь делает любые изменения. Все в порядке.Тем не менее, я также добавил на страницу несколько ссылок mailto, например:

Report a problem

Даже несмотря на то, что mailto не уходит со страницы (он открывает почтовое приложение пользователя по умолчанию), он по-прежнему вызывает событие onbeforeunload, запрашивая окно подтверждения, которое раздражает. Я могу обойти это, установив target="_blank"в ссылке, но тогда пользователь останется на пустой вкладке.

Могу ли я сделать так, чтобы ссылка mailto не запускала событие onbeforeunload? Я подумал об ужасно хакерском способе сделать это, имея другую временную переменную javascript, которая заставляет подтверждение onbeforeunload не срабатывать, но это кажется немного грязным. Я все равно сделаю это, пока жду ответа, но есть ли у кого-нибудь более приятное решение?

спасибо, макс

16
задан Community 23 May 2017 в 11:47
поделиться