2012-02-04 61 views
3

當此代碼運行時,警報框中包含的鏈接包含& list =雜貨和& [email protected]。當mailto:啓動並彈出電子郵件窗口時,這些參數丟失,我無法弄清楚原因。字符串的長度似乎並不重要。爲什麼mailto不包含鏈接參數?

該代碼具有運行所需的全部功能。你可以在這裏運行:http://jsfiddle.net/mckennatim/rRerR/

 <div data-role="header"> 
      <h1>My Title</h1> 
     </div><!-- /header -->  
     <div data-role="content"> 
      <h3>Add List</h3> 
      <form> 
       <div data-role="controlgroup" id="addwhat"> 
        <input type="email" id="shemail" name="inp0" class="inp" /> 
       </div> 
       <div data-role="controlgroup" data-type="horizontal" class="aisubmit"> 
        <input type="submit" data-theme="b" id="mailit" value="mail it"/> 
       </div>       
      </form> 
     </div><!-- /content --> 
    </div><!-- /page --> 
    <script> 
     $('body').on('click', "#mailit", function (e) { 
      e.stopImmediatePropagation(); 
      e.preventDefault(); 
      repo = "Sebaza"; 
      list = "groceries"; 
      semail = $("#shemail").val(); 
      //(semail); 
      urri ='mailto:'+ semail + '?subject=share this list with me' + '&cc=' + semail + '&body=Hi, I think it would be cool if we shared this ' + list +' list on our phones. That way when either of us modified it we would see the update. http://10.0.1.18/webeshoppin/stuff2get/www/food2buy.html?repo=' + repo + '&list=' + list + '&email=' + semail ; 
      window.location = urri; 
      alert('clicked ashare ' +urri); 
     });   
    </script>  
</body> 
</html> 
+0

帕特里克是正確的。額外的URL參數連接到整個mailto URL,並被視爲mailto協議的未定義部分,所以它們只是掉出來。如果你像Patrick建議的那樣逃脫他們,那麼他們會融入併成爲身體參數的一部分。 – dbrin 2012-02-04 04:05:41

+0

不說所有使用的電子郵件客戶端 - 並非所有的都支持這些額外的參數(我知道是因爲我寫的那個不會。我會在某天添加這個功能) – eselk 2012-02-04 04:17:57

回答

7

的 '?'和「&」字符正在被mailto鏈接的解析器剝離。

這些字符需要編碼。試着用替換:

? = %3F 
& = %26 

是這樣,那JS行看起來像:

urri ='mailto:'+ semail + '?subject=share this list with me' + '&cc=' + semail + '&body=Hi, I think it would be cool if we shared this ' + list +' list on our phones. That way when either of us modified it we would see the update. http://10.0.1.18/webeshoppin/stuff2get/www/food2buy.html%3Frepo=' + repo + '%26list=' + list + '%26email=' + semail; 
+0

這個演示程序(使用'window .open()')不使用Firefox中的編碼使用Gmail發送電子郵件:http://jsfiddle.net/rRerR/4/ – 2012-02-04 03:54:23

+0

這很有趣,因爲我一直在使用谷歌通知器搞亂註冊表設置,防止Windows Live Mail打開。唉,我嘗試了你的cose,它仍然打開了windows郵件 – mcktimo 2012-02-04 04:02:08

+0

更好的方法是使用'encodeURIComponent()'。 – 2013-06-10 13:19:04

相關問題