[英]How do you detect if the page is a redirect using Javascript in the client side
[英]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.