2011-11-02 20 views
9

मेरे पास साइट के सभी पृष्ठों में mailto बटन है और मैं उस पृष्ठ के संदर्भ को ई-मेल बॉडी में लिखना चाहता हूं।वर्तमान पृष्ठ पर 'mailto' बॉडी लिंक में कैसे लिखें

एक पृष्ठ में मैं

<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> 

हो सकता है लेकिन यह कैसे मैं इस सभी पृष्ठों के लिए सामान्य कर सकते हैं?

+0

जावास्क्रिप्ट आपके लिए यह कर सकता है। "Document.location.href" का उपयोग करके। या, यदि आप .php का उपयोग कर रहे हैं तो आप इसे और भी आसान कर सकते हैं। क्या आप PHP का उपयोग कर सकते हैं? मुझे बताएं और मैं आपके लिए एक उदाहरण बना सकता हूं! –

+0

नहीं, मैं एएसपी का उपयोग करता हूं;) लेकिन मैं उस भाग में जावास्क्रिप्ट कैसे लिख सकता हूं? (Body = "...") –

उत्तर

31

यह शुद्ध जावास्क्रिप्ट समाधान है:

<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

यह * पृष्ठ को बदलने का कारण हो सकता है। इसे रोकने के लिए झूठी वापसी करें। ... + window.location; झूठी वापसी; "> ... –

+1

@TravisSwientek क्या आप कृपया समझा सकते हैं कि ऐसा क्यों होगा? –

+0

यह वर्तमान विंडो में ईमेल क्लाइंट खोलता है। किसी भी तरह से मैं इसे एक नए टैब में खोल सकता हूं? धन्यवाद। – NJT

3

आप प्रत्येक पृष्ठ पर एक जेएस डाल सकते हैं जो दस्तावेज़ लोड होने पर सभी ईमेल लिंक के सभी hrefs को संशोधित कर सकता है।

मैं उदाहरण के कोड के लिए jQuery का उपयोग करेंगे क्योंकि अधिक कॉम्पैक्ट है, लेकिन इस शुद्ध जे एस के साथ भी प्राप्त किया जा सकता:

$(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

बेशक इसे शुद्ध जावास्क्रिप्ट प्राप्त किया जा सकता है :), jquery क्या है? – david

+2

@ डेविड:" jQuery एक तेज़ और संक्षिप्त जावास्क्रिप्ट लाइब्रेरी है जो एचटीएमएल दस्तावेज़ ट्रैवर्सिंग, इवेंट हैंडलिंग, एनिमेटिंग और अजाक्स इंटरैक्शन को तेज़ वेब विकास के लिए सरल बनाता है। jQuery को जावास्क्रिप्ट लिखने के तरीके को बदलने के लिए डिज़ाइन किया गया है। " –

+0

धन्यवाद निक, मैं सिर्फ आपके पास खुदाई कर रहा था:} 'jquery' जावास्क्रिप्ट – david

1
आप

ईमेल बॉडी

यहां एक सामान्य जावास्क्रिप्ट फ़ंक्शन

में स्ट्रिंग को शामिल करने के लिए &body= का उपयोग करने की आवश्यकता है
<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

जावास्क्रिप्ट के साथ, आप यूटीएफ -8-पृष्ठ पर एनकोडुरिकॉम्पोनेंट() का उपयोग करके विषय और शरीर hfvalues ​​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> 

यदि आप यह सर्वर-पक्ष कर रहे हैं, तो आप केवल मेलट लिंक बना सकते हैं और इसे href विशेषता मान के रूप में छोड़ सकते हैं। फिर, आपको जेएस की बिल्कुल आवश्यकता नहीं होगी।

मुझे लगता है कि एएसपी में कुछ यूआरआई एन्कोडिंग फ़ंक्शन हैं जो encodeURIComponent() की तरह काम करते हैं।

आप मेरे mailto URI composer पृष्ठ के स्रोत को एक और उदाहरण के रूप में भी देख सकते हैं।

आप http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail और मेरे mailto URI syntax validator पर भी एक नज़र डालें।

< और > कि मैं यूआरआई में डिब्बे में बंद, जे एस कोड में ऊपर, क्यों के लिए RFC3986 की "परिशिष्ट सी संदर्भ में कोई यूआरआई परिसीमन" देखें

इसके अलावा, window.location.href के बजाय, आप window.location या document.location.href या document.location का उपयोग कर सकते हैं। मैं आमतौर पर "document.location" का उपयोग करता हूं।

क्यों आप ऑनक्लिक विशेषता के बजाय जावास्क्रिप्ट यूआरआई का उपयोग करते हैं, तो this answer देखें।

यह भी ध्यान दें कि ऊपर दिए गए कोड में जेएस यूआरआई में, मैंने कोड को अज्ञात फ़ंक्शन में लपेट लिया। इस मामले में यह जरूरी नहीं है क्योंकि फ़ंक्शन किसी भी चीज़ को वापस नहीं करता है जो आपके द्वारा क्लिक किए जाने पर दस्तावेज़ को बदल देगा। लेकिन, यह सिर्फ अच्छे उपाय के लिए हर समय ऐसा करना है।

जावास्क्रिप्ट यूआरआई बनाने में मदद के लिए मेरे Javascript URI compose देखें।

+1

अच्छा मेलto सत्यापन Shadow2531 – david

+0

क्या कोई नया रिक्त टैब/विंडो खोलने से रोकने के लिए वैसे भी है? – Jason

+1

@ जेसन आप window.open (uri) को window.location.href = uri में बदल सकते हैं – Shadow2531

संबंधित मुद्दे