Tôi muốn gọi một liên kết mailto từ JavaScript - đó là tôi muốn một phương pháp cho phép tôi mở ứng dụng email trên PC của người dùng, chính xác như thể họ đã nhấp vào một liên kết mailto bình thường.
Tôi có thể làm cái này như thế nào?
Tôi muốn gọi một liên kết mailto từ JavaScript - đó là tôi muốn một phương pháp cho phép tôi mở ứng dụng email trên PC của người dùng, chính xác như thể họ đã nhấp vào một liên kết mailto bình thường.
Tôi có thể làm cái này như thế nào?
<button onclick="window.open('mailto:KingRider<contato@sandroalvares.com.br>');">Contact me</button>
Câu trả lời:
Bạn có thể sử dụng window.location.href
ở đây, như thế này:
window.location.href = "mailto:address@dmail.com";
window.location.href = 'mailto:address@dmail.com&subject=Hello there&body=This is the body';
. Không phải ?
và không &
, chỉ&
Bạn có thể tránh vấn đề trang trống được thảo luận ở trên bằng cách sử dụng .click () với một liên kết trên trang:
document.getElementById('mymailto').click();
...
<a href="mailto:...." id="mymailto" style="display:none"></a>
câu trả lời hiệu quả cho tôi, được thử nghiệm trong chrome, IE và firefox cùng với outlook là
window.location.href = 'mailto:address@dmail.com?subject=Hello there&body=This is the body';
%0d%0a
là biểu tượng dòng mới của nội dung email trong một liên kết mailto
%20
là biểu tượng không gian nên được sử dụng, nhưng nó cũng hoạt động đối với tôi với không gian bình thường
Trên thực tế, có một khả năng để tránh trang trống.
Tôi phát hiện ra, bạn có thể chỉ cần chèn một iframe với liên kết mailto vào dom. Tính năng này hoạt động trên Firefox / Chrome và IE hiện tại (IE cũng sẽ hiển thị hộp thoại xác nhận ngắn).
Sử dụng jQuery, tôi nhận được điều này:
var initMailtoButton = function()
{
var iframe = $('<iframe id="mailtoFrame" src="mailto:name@domain.com" width="1" height="1" border="0" frameborder="0"></iframe>');
var button = $('#mailtoMessageSend');
if (button.length > 0) {
button.click(function(){
// create the iframe
$('body').append(iframe);
//remove the iframe, we don't need it any more
window.setTimeout(function(){
iframe.remove();
}, 500);
});
}
}