2012-11-19 45 views
19

我使用填充JavaScript的mailto:在整個我的web應用程序中發送信息,但每次用戶按發送按鈕時,它會在瀏覽器中打開一個新選項卡在打開郵件應用程序(Outlook,Gmail等)之前。如何防止mailto事件在瀏覽器中打開新選項卡

有什麼辦法可以防止空白標籤打開嗎?


編輯:在以下所有主要瀏覽器中都會遇到此問題:Internet Explorer,Firefox和Google Chrome。

我使用window.open()發送電子郵件,有沒有其他已知的選擇?

這裏是我發送電子郵件:

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

我不想使用window.location.href用戶發送的電子郵件後,因爲我顯示消息。

+0

你應該添加導致問題的代碼並命名您正在使用的瀏覽器。 – AmShaegar

回答

19

感謝您的編輯。有確實是一種替代方案:

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

我不希望用戶發送的電子郵件後,因爲我顯示 消息使用window.location.href。

我真的沒有得到這個。

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

這應該關閉多餘的瀏覽器窗口,並保持電子郵件應用程序中打開:當使用mailto:window.location.href

+1

感謝您的貢獻和最新的編輯!我沒有用'mailto:'URI測試'href'屬性。這工作正如預期的那樣! –

+6

例如,如果將gmail設置爲'mailto:'協議的默認處理程序,則使用'mailto:'時您將離開網站。 chrome:// settings/handlers –

+0

另外,這在Firefox上無法正常工作。如果你有一個websocket連接打開,當你這樣做時(即使頁面不導航),firefox會立即殺死它。 – CpnCrunch

0

不,這嚴格取決於您的瀏覽器如何處理新選項卡。我花了幾個小時尋找一個變通,解決方案,什麼...

火狐:選項 - >標籤

Safari中:偏好 - >標籤

3

嘗試命名窗口(mywindow的),並加入了密切的()命令,你是不會離開的網站。至少它對我有效。

+0

它也適用於慢機器嗎?我可以想象,窗口關閉太快,瀏覽器無法響應mailto鏈接。 – AmazingTurtle

+2

它甚至不能在我的快速機器上工作。 – CpnCrunch

6

The window.location.href AmShaegar的解決方案工作得很好,但它在我開發的複雜應用程序中引起了副作用。

我終於想出了這個解決方案一個可能感興趣的:

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

看到這個plunker:http://plnkr.co/edit/J0LvQU?p=preview

+2

這似乎是對我來說最合適的解決方案,特別是如果你想避免與'href'鏈接,那些被垃圾郵件機器人抓取。 –

+1

值得注意。在Chrome中,如果該網站位於https上,則會將創建的iframe作爲混合內容進行阻止,從而導致mailto永遠不會觸發。 –

3

短的時間間隔後,就關閉窗口:

var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message; 
var win = window.open(mailto_link,'emailWindow'); 
setTimeout(function() { win.close() }, 500); 
相關問題