2012-11-19 13 views
19

Używam wypełnionego kodu JavaScript, aby przesłać informacje w mojej aplikacji internetowej, ale za każdym razem, gdy użytkownik naciśnie przycisk Wyślij, otwiera nową kartę w przeglądarce przed otwarciem aplikacji do wysyłania wiadomości (Outlook, Gmail itp.).Jak zapobiec otwieraniu nowej zakładki w przeglądarce za pomocą przeglądarki mailowej

Czy istnieje sposób, aby uniemożliwić otwarcie pustej zakładki?


Edytuj: Ten problem występuje we wszystkich następujących głównych przeglądarkach: Internet Explorer, Firefox i Google Chrome.

Używam window.open() do wysyłania e-maili, czy są jakieś znane alternatywy?

Oto jak wysłać e-mail:

var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message; 
var win = window.open(mailto_link,'emailWindow'); 

nie chcę używać window.location.href ponieważ jestem wyświetlając komunikat, gdy użytkownik wysłał wiadomość.

+0

powinieneś dodaj kod, który powoduje problem i nazwij przeglądarkę, której używasz. – AmShaegar

Odpowiedz

19

Dziękujemy za edycję. Jest rzeczywiście alternatywą:

window.location.href = "mailto:[email protected]"; 
alert("Thank you!"); 

Nie chcę używać window.location.href ponieważ jestem wyświetlając komunikat gdy użytkownik wysłał wiadomość.

Naprawdę nie dostałem tego. Nie opuszczają witrynę przy użyciu mailto: z window.location.href

+1

Dziękujemy za Twój wkład i najnowszą edycję! Właściwie nie przetestowałem właściwości 'href' z identyfikatorem URI' mailto: '. Działa to zgodnie z przeznaczeniem! –

+6

opuszczasz stronę internetową, gdy używasz 'mailto:' jeśli na przykład, Gmail jest ustawiony jako domyślny program obsługi dla protokołu 'mailto:'. chrome: // settings/handlers –

+0

To również nie działa poprawnie w Firefoksie. Jeśli masz otwarte połączenie z internetem, firefox natychmiast go zabije (nawet jeśli strona nie nawiguje). – CpnCrunch

0

Nie, zależy to ściśle od tego, jak przeglądarka obsługuje nowe karty. Spędziłem godziny patrząc na pracę wokół, w roztworze, cokolwiek ...

Firefox: Opcje -> tabs

safari: Preferencje -> zakładki

3

Spróbuj nazewnictwa okno (MyWindow) i dodanie close() polecenie:

<script> 
    myWindow=window.open("mailto:[email protected]"); 
    myWindow.close(); 
</script>'; 

To powinno zamknąć dodatkowe okno przeglądarki i utrzymanie aplikacji e-mail otwarte . Przynajmniej to działało dla mnie.

+0

Czy działa również na wolnych komputerach? Mogę sobie wyobrazić, że okno zamyka się zbyt szybko, aby przeglądarka mogła odpowiedzieć na link mailto. – AmazingTurtle

+2

To nawet nie działa na mojej szybkiej maszynie. – CpnCrunch

6

Rozwiązanie window.location.href działa całkiem nieźle, ale spowodowało efekt uboczny w złożonej aplikacji, którą rozwijałem.

I wreszcie wymyślił tego rozwiązania można by być zainteresowani:

$('<iframe src="mailto:[email protected]">').appendTo('body').css("display", "none"); 

Zobacz ten plunker: http://plnkr.co/edit/J0LvQU?p=preview

+2

To wydaje mi się najodpowiedniejszym rozwiązaniem, szczególnie jeśli chcesz uniknąć połączeń z 'href', ponieważ są one indeksowane przez roboty spamujące. –

+1

Warto zauważyć. W chrome, jeśli witryna jest na https, to zablokuje utworzoną iframe jako mieszaną zawartość, co powoduje, że mailto nigdy nie uruchamia się. –

3

prostu zamknąć okno po krótkiej przerwie:

var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message; 
var win = window.open(mailto_link,'emailWindow'); 
setTimeout(function() { win.close() }, 500); 
Powiązane problemy