<a id="LnkEmail" onclick="doMailto('d@s.com');" href="javascript:void(0);">
<span id="LblEmail">ABC</span></a>
<script type="text/javascript">
function doMailto(EmailAddress) {
document.location.href = window.open('mailto:' + EmailAddress, 'new window');
}
</script>
查询 - 在IE 8中 - 单击它时没有任何反应。有什么想法吗?
答案 0 :(得分:9)
弹出窗口选择功能是Firefox的原生功能,并不是Internet Explorer中的可用功能,因为Internet Explorer直接从Windows(操作系统)处理关联。因此,无论哪个程序用于处理计算机上的mailto:
链接,都将打开(最典型的是Outlook Express)。没有一致的方法来避免这种情况,因为您无法控制用户决定打开该协议的内容。我的建议是写一个POST asp.net联系表。我自己不是ASP.NET开发人员,但我找到了这个教程:http://www.jimcobooks.com/tutorials/emailform1/default.aspx
测试这个理论:尝试找一台没有任何邮件客户端的计算机(没有outlook,outlook express等),然后Internet Explorer会提示程序打开协议。
另一项测试(我测试的方式)我设置了Google Chrome以处理所有mailto:请求并将其转发到我的Gmail Webmail界面。当我测试你的链接,并在jsfiddle(http://jsfiddle.net/sHYW8/2/)中修改你的windowname时,Windows问我IE是否可以打开谷歌Chrome来处理协议。
简短的回答:除非你强迫所有用户为IE安装第三方插件,否则你的要求在技术上是不可能的。这是因为Internet Explorer是Windows操作系统的一部分,而Mozilla Firefox是第三方浏览器,它被迫以自己的方式处理协议。
<强>更新强>
我找到了一个jQuery插件,它使用了适用于Gmail的API,Yahoo!和MSN。它不是弹出窗口,而是更多的翻转。我认为这将是你最接近的赌注。
http://kevin-cantwell.github.com/webmailto/
对你来说好处是实现看起来很容易。我会看一下底部的例子,看起来很漂亮。
答案 1 :(得分:3)
试试这个:
function doMailto(EmailAddress) {
document.location.href = 'mailto:' + EmailAddress;
}
我认为你的IE阻止了javascript创建的弹出窗口。
只是要明确......
Adriano建议只使用普通的html标签也行。 像这样:
<a id="LnkEmail" href="mailto:d@s.com">
正如Vishal和Kyle Macey试图解释的那样: 在Firefox中弹出的“启动应用程序”窗口...这不是您可以从网页创建的窗口。这是Firefox自己的窗口,它在单击mailto:链接时显示。 IE不提供相同类型的窗口。它通常只是打开您的默认邮件客户端(在您的情况下,它可能是Outlook)。
最后...... Javascript与JQuery不同。 JQuery是用Javascript编写的,但JQuery不是Javascript。
答案 2 :(得分:1)
对于IE 7和8,只能在窗口名称中使用任何空格。尝试将您的代码更改为:
window.open('mailto:' + EmailAddress, 'Mail');
答案 3 :(得分:0)
以下是您提及的工作代码
window.open('mailto:'+ EmailAddress,'newwindow');
它的工作但像FF IE没有为您提供选择邮件引擎的选项。 如果要运行代码,则必须使用set default program设置邮件的默认程序。 并且您只能将Outlook设置为默认程序。在外观中你可以绑定任何东西,如雅虎或gamil,你可以使用你的邮件代码为IE。
我认为你必须为此做编码,因为IE没有像FF那样提供任何附加功能。
首先,如果默认客户端是否存在,则必须通过以下代码
来解决问题RegistryKey hkey = Registry.ClassesRoot.OpenSubKey( “mailto \ shell \ open \ command”,false);
如果此键为null,则不存在默认客户端。所以你必须在弹出窗口中显示邮件提供列表。您必须将所选提供商设置为默认客户邮件。
http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.classesroot(v=vs.90).aspx 使用上面的链接,您可以找到在机器上注册的列表显示列表。
http://www.pcreview.co.uk/forums/re-add-dword-value-registry-t1401434.html 此链接显示如何在注册表中设置值。
然后执行您的mailto代码。
答案 4 :(得分:0)
如果你真的想要这样的列表,有一种方法使用纯JavaScript,虽然它可能与你目前在firefox中的完全相同。你可以做的是用javascript创建一个模态对话框,显示一些流行的webmail客户端和一个选项“default system client”而不是“Microsoft Office Outlook”。 “选择一个应用程序”也不可能包括在内。接下来,如果用户选择本机客户端,您只需像当前一样触发mailto链接,并且如果用户选择例如gmail,则触发一个窗口打开的链接
当然还有您自己的变量,来自您的mailto链接。您必须自己弄清楚不同网络邮件服务的相关链接,但据我所知,大多数都有这种链接,gmail和雅虎肯定有。
答案 5 :(得分:0)
邮件列表是仅由Firefox提供的实用程序功能。您可能会或可能不会在另一个类似的软件上找到一个软件的功能。如果你不这样做,你应该安心一下。
尝试记住,一旦用户选择默认邮件客户端,在Firefox中,您将不再获得弹出窗口。因此,没有尝试创建解决方案,这不会是永久性的。
要减少您的要求,您正尝试选择该用户的邮件客户端。但是一个网站无法改变用户的系统设置,其根本不允许。为什么? 因为它为用户打开了许多漏洞,如果这是以某种方式允许的话。