繁体   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