2011-11-02 38 views
9

Tôi có nút mailto trong tất cả các trang trên trang web của mình và tôi muốn viết tham chiếu đến trang đó trong nội dung e-mail.Cách viết liên kết nội dung 'mailto' đến trang hiện tại

Trong một trang tôi có thể có

<a class="email" title="Email a friend" href="mailto:?subject=Interesting%20information&amp;body=I thought you might find this information interesting:%20%0d%0ahttp://www.a.com/Home/SiteMap/tabid/589/Default.aspx">Email</a> 

Nhưng làm thế nào tôi có thể làm cho điều này chung cho tất cả các trang?

+0

Javascript có thể làm điều này cho bạn. Bằng cách sử dụng "document.location.href". Hoặc, nếu bạn đang sử dụng .php bạn có thể làm điều đó dễ dàng hơn. Bạn có thể sử dụng php? cho tôi biết và tôi có thể làm ví dụ cho bạn! –

+0

Không, tôi sử dụng Asp;) Nhưng làm cách nào tôi có thể viết javascript ở phần đó? (Body = "...") –

Trả lời

31

Đây là giải pháp javascript tinh khiết:

<a class="email" title="Email a friend" href="#" onclick="javascript:window.location='mailto:?subject=Interesting information&body=I thought you might find this information interesting: ' + window.location;">Email</a> 
+0

Điều này * có thể * khiến trang thay đổi. ... + window.location; return false; "> ... –

+1

@TravisSwientek Bạn có thể giải thích tại sao điều đó xảy ra không? –

+0

Thao tác này sẽ mở ứng dụng email trong cửa sổ hiện tại. Bất kỳ cách nào tôi có thể làm cho nó mở trong một tab mới? Cảm ơn. – NJT

3

Bạn có thể đặt JS trên mỗi trang có thể sửa đổi tất cả các href của tất cả liên kết email khi tài liệu tải.

tôi sẽ sử dụng jQuery cho mã ví dụ vì là nhỏ gọn hơn, nhưng điều này có thể đạt được cũng với JS tinh khiết:

$(document).ready(function(){ 
    $(".email").attr("href", "mailto:?subject=Interesting%20information&amp;body=I thought you might find this information interesting:%20%0d%0a"+window.location); 
}); 
+1

tất nhiên nó có thể đạt được javascript tinh khiết :), jquery là gì?" – david

+2

@david: "jQuery là Thư viện JavaScript nhanh và ngắn gọn, đơn giản hóa việc chuyển tài liệu HTML, xử lý sự kiện, hoạt ảnh và tương tác Ajax để phát triển web nhanh. jQuery được thiết kế để thay đổi cách bạn viết JavaScript. " –

+0

cảm ơn nick, tôi vừa mới đào bới bạn:}' jquery' javascript là gì – david

1

bạn cần sử dụng &body= để bao gồm một chuỗi trong nội dung email

đây là chức năng javascript chung

<script> 
    function emailFriend(){ 

    var strrep ,ptitle = document.title; 

strrep= ptitle.replace(/"/g,'%22'); 
strrep= ptitle.replace(/&/g,'%26'); 

var mailtourl = "mailto:?subject=Interesting%20information&body=I thought you might find this information interesting: "+encodeURIComponent(location.href); 
location.href = mailtourl; 
return false 
} 

</script> 


<a href="javascript:;" onclick="emailFriend();return false">Email</a> 
8

Với Javascript, bạn utf-8% mã hóa chủ đề và giá trị hfvalues ​​bằng cách sử dụng encodeURIComponent() trên trang UTF-8.

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title></title> 
     <script> 
      function SendLinkByMail(href) { 
       var subject= "Interesting Information"; 
       var body = "I thought you might find this information interesting:\r\n\r\n<"; 
       body += window.location.href; 
       body += ">"; 
       var uri = "mailto:?subject="; 
       uri += encodeURIComponent(subject); 
       uri += "&body="; 
       uri += encodeURIComponent(body); 
       window.open(uri); 
      } 
     </script> 
    </head> 
    <body> 
     <p><a href="javascript:(function()%7BSendLinkByMail()%3B%7D)()%3B">Email link to this page</a></p> 
    </body> 
</html> 

Nếu bạn đang thực hiện phía máy chủ này, bạn chỉ có thể tạo liên kết mailto và phát nó làm giá trị thuộc tính href. Sau đó, bạn sẽ không cần JS chút nào.

Tôi giả sử ASP có một số hàm mã hóa URI hoạt động như encodeURIComponent().

Bạn cũng có thể xem nguồn trang mailto URI composer của mình làm ví dụ khác.

Bạn cũng có thể xem http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mailmailto URI syntax validator của tôi.

Đối với < và > mà tôi mã hóa URI trong, trong mã JS ở trên, hãy xem "Phụ lục C. Phân định URI trong ngữ cảnh" của RFC3986 vì lý do.

Ngoài ra, thay vì window.location.href, bạn có thể sử dụng window.location hoặc document.location.href hoặc document.location. Tôi thường sử dụng "document.location".

Vì sao bạn sử dụng URI Javascript thay vì thuộc tính onclick, hãy xem this answer.

Cũng lưu ý rằng trong JS URI trong mã ở trên, tôi đã bao bọc mã trong một hàm ẩn danh. Điều này không cần thiết trong trường hợp này bởi vì hàm không trả về bất kỳ thứ gì có thể thay đổi tài liệu khi bạn nhấp vào. Nhưng, nó chỉ là làm tất cả các thời gian cho biện pháp tốt.

Xem Javascript URI compose để giúp tạo URI javascript.

+1

xác thực mailto đẹp Shadow2531 – david

+0

Có cách nào để ngăn điều này mở một tab/cửa sổ trống mới không? – Jason

+1

@Jason Bạn có thể thay đổi window.open (uri) thành window.location.href = uri – Shadow2531

Các vấn đề liên quan