Prawdopodobnie powiązany z How to open mailto link in Chrome with Window.open without creating a new tab?mailto link (w chrome) uruchamia window.onbeforeunload - czy mogę temu zapobiec?
Witam wszystkich. Mam stronę formularza gdzie Umieściłem potwierdzić window.onbeforeunload, aby powstrzymać ludzi poruszania się i utraty ich zmiany przez przypadek:
window.onbeforeunload = function(){
if(changed)
return "You have unsaved changes. Do you really want to leave this page without saving?";
};
gdzie changed
jest zmienna i ustawiona na wartość true, gdy użytkownik wprowadzi żadnych zmian . Wszystko w porządku. Jednak Dodałem także kilka linków mailto na stronie, tak jak poniżej:
<a class="button button-alt" href="mailto:[email protected]">Report a problem</a>
Choć mailto nie przechodząc od strony (to otwarcie domyślnego użytkownicy aplikacji poczty), to wciąż wyzwalania Zdarzenie onbeforeunload, monitujące o potwierdzenie, co jest denerwujące. Mogę obejść to ustawienie target="_blank"
na łączu, ale wtedy użytkownik pozostaje w pustej zakładce.
Czy mogę ustawić link mailto, aby nie powodował zdarzenia onbeforeunload? Pomyślałem o strasznie hackowatym sposobie robienia tego przez posiadanie kolejnej tymczasowej zmiennej javascript, która powoduje, że onbeforeunload nie daje potwierdzenia, ale wydaje się trochę brudna. Zrobię to mimo, że czekam na odpowiedź, ale czy ktoś ma lepsze rozwiązanie?
Dzięki, max
Wydaje się to o wiele przyjemniejsze - dzięki! –
Naprawdę? odpowiadasz na post 3 lata później?lol Jedyną różnicą jest dodanie onclick z dyskretnym zdarzeniem ... lol – epascarello
Korzysta z jQuery bez powodu, opiera się na zmiennej globalnej. Odpowiedź Johna Kurlaka poniżej jest znacznie przyjemniejsza. Używa ukrytego elementu iframe, całkowicie eliminując potrzebę JavaScript, nie mówiąc już o jQuery. Może następnie samodzielnie zawrzeć poprawkę w pliku szablonu. – mGuv