Med*_*Man 14 email internet-explorer
我在使用Internet Explorer 8(IE8)打开包含长消息的mailto链接时遇到问题.
用户单击链接后,IE将更改为about:空白页面,并且永远不会完成对outlook的调用以创建电子邮件
这是一个例子:
<a href="mailto:name@name.com?subject=123456789&body=111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111">mailto fails in IE8</a>
Run Code Online (Sandbox Code Playgroud)
如果我缩短1的列表,则会生成电子邮件并发送.
这是一个已知的IE问题吗?有什么限制?
小智 32
我永远无法让location.href = mailtoHref
黑客工作.但是,我发现以下作品.
$('body').append($('<iframe id="mailtoHack" src="' + mailtoHref + '"/>');
$('#mailtoHack').remove();
Run Code Online (Sandbox Code Playgroud)
编辑
这是一种没有jQuery的方法:
function mailtoHack(href) {
var iframeHack;
if (href.indexOf("mailto:") === 0) {
iframeHack = document.createElement("IFRAME");
iframeHack.src = href;
document.body.appendChild(iframeHack);
document.body.removeChild(iframeHack);
}
}
Run Code Online (Sandbox Code Playgroud)
并且,为了更好的衡量,这里是一个Knockout自定义绑定可用作data-bind="mailto: foo"
:
ko.bindingHandlers.mailto = {
init: function (element, valueAccessor) {
ko.utils.registerEventHandler(element, "click", function (e) {
var href = ko.unwrap(valueAccessor()), iframeHack;
if (href.indexOf("mailto:") === 0) {
iframeHack = document.createElement("IFRAME");
document.body.appendChild(iframeHack);
document.body.removeChild(iframeHack);
} else {
e.preventDefault();
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
CBo*_*ono 12
我也用IE8遇到了这个问题.令人惊讶的是发生了这种情况; 这似乎是我们大约在1998年遇到的一个问题!
无论如何,我做了一些测试,并想出了一个使用Javascript的解决方法:
<a href="javascript:doMailto()">Send Email</a>
Run Code Online (Sandbox Code Playgroud)
然后定义这个脚本:
<script type="text/javascript">
var sMailto = "mailto:name@name.com?subject=123456789&body=111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111234567890";
function doMailto() {
document.location.href = sMailto;
}
</script>
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,IE都没有问题"转发"到长URL(我的测试场景使用800多个字符).在具有多个mailto
链接的情况下,您可以定义多个URL变量并将参数发送到doMailto()
该变量,以便切换到适当的链接变量.
它难看吗?你打赌.但它适用于紧要关头.