簡體   English   中英

如何啟動 eMail 客戶端,然后使用 Javascript 進行頁面重定向?

[英]How can I launch the eMail client, and then do a page redirect with Javascript?

我需要使網站 function 在其他瀏覽器上與在 IE6 中完全相同。 當前代碼的一部分看起來與此類似:

<script>
function myFunc(){
 location.href="mailto:test@test.com&body=Hello!";
 location.href="newPage.html";
}
</script>
<body onload="myFunc();">
</body>

在 IE 中,這會導致郵件客戶端打開並准備好指定的消息,然后將瀏覽器重定向到 newPage.html。 然而,其他瀏覽器僅重定向到 newPage.html。 我怎樣才能跨瀏覽器一致地實現這種效果(打開郵件客戶端然后進行頁面重定向)?
請注意,我也曾嘗試使用元刷新來完成此操作,但沒有成功。

嘗試使用類似的東西:

<a href="mailto:mail@domain.com" onclick="window.location.href='np.html'">send</a>

而不是onload。

更改href屬性將啟動位置加載,然后再次更改它將取消上一個導航。

看來IE6會在設置屬性后立即啟動電子郵件客戶端,然后繼續執行javascript。 其他瀏覽器似乎以不同的方式執行操作,第二個位置加載將取消第一個。

我設法使用計時器在Chrome中解決此問題,它也適用於其他瀏覽器:

function myFunc(){ 
  location.href="mailto:test@test.com&body=Hello!"; 
  window.setTimeout(function () { location.href="newPage.html" }, 0); 
} 

總的來說,我傾向於認為安全設置會妨礙你,並建議只給用戶一個無聊的老式mailto鏈接點擊。 (編輯:也許就像Mic建議的一樣。)

那就是說,如果你引入延遲,我想知道事情是否會變得更可靠:

function myFunc() {
    location.href = "mailto:test@test.com&body=Hello!";
    setTimeout(function() {
        location.href = "newPage.html";
    }, 500);
}

這只有在客戶端的瀏覽器知道首先為mailto: link打開哪個電子郵件客戶端時才有效。 如果用戶使用未在瀏覽器中注冊的基於Web的客戶端,則不會發生任何事情。

此外,可能是安全設置阻止mailto:鏈接以編程方式打開,或將來阻止它。

我不會依賴於這兩種方式,只是作為一個很好的可選便利功能。

無論如何,要回答你的問題,你能嘗試在兩次通話之間設置超時嗎? 也許位置刷新太快,瀏覽器無法趕上。

location.href="mailto:test@test.com&body=Hello!";
setTimeout(function(){ location.href = 'newPage.html' },  500);
function redirect() {
    setTimeout(function() {
        location.href = "index.html";
    }, 1000);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM