MailTo来自Javascript

我有一个链接按钮,用于从页面内容构建mailto。 什么是从javascript启动它而不打开空白窗口或扰乱它被调用的窗口的最佳方法?

function Email() { var sMailTo = "mailto:"; var sBody = ""; var alSelectedCheckboxes = new Array(); $("input:checkbox[CheckBoxType=Email]:checked").each(function() { alSelectedCheckboxes.push($(this).val()); }); if (alSelectedCheckboxes.length > 0) { for (var i=0; i<alSelectedCheckboxes.length; i++) { sBody += alSelectedCheckboxes[i]; sBody += "\n"; } sMailTo += escape("") +"?subject=" +escape("") +"&body=" +escape(sBody); window.location.href = sMailTo; } else { alert("Please select some results"); } } 

简单的function在上面。 window.location.href无法正常工作,除非它是Firefox / Chrome(它在IE8中重绘页面)。 我也尝试过window.open(sMailTo,“_ self”)但是在IE8中再次打破了它所调用的页面。

我确定这是一个愚蠢的问题…. 🙂

谢谢

我认为这根本不是傻瓜! 这是一个好的开始。 接下来我要尝试的是在jquery中创建一个实际的链接对象,将它附加到正文,然后单击()它。

 //window.location.href = sMailTo; $('click').appendTo('body').click().remove(); 

只要你正在使用的escape()函数摆脱所有的引号并正确编码html,它应该工作。

但我不得不说,这可能很难做到恰到好处。 如果它仍然不起作用,我建议在服务器端进行链接POSTS所需的所有html。

如果你正在使用jQuery,那么你可以根据你构建的标记轻松创建一个元素(参考这个例子的答案 ),然后通过简单地执行以下操作来调用链接的click事件:

 element.click();