2014-12-28 3 views
0

가 나는 링크를 누르면 때 흔한 대화 상자가 열립니다 JS 코드가, 그것은 "친구와 공유"로하고있다 기능 :하이퍼 링크,

setTimeout(function(){ 
      var subject, body, email_string; 
      subject = oScript_x.post_title; 

      body = "you got mail from"; 
      //body += "link: " + "<a href='" + location.href + "'>" + location.href + " </a>"; 
      body += "link " + location.href; 


      email_string = "mailto:?subject=" + subject + "&body=" + body; 
      email_string = email_string.replace(/ /g, "%20").replace(/\n/g, "%0A"); 

내가 이것을 사용하려고 : body + = "link :"+ ""+ location.href + ""; 하지만 행운은 없습니다 ...

이제 링크가없는 텍스트로만 링크를 표시하고 있습니다. 링크를 클릭 할 수 있고 앵커 텍스트 아래에 도움을 주시면 감사하겠습니다.

감사합니다.

답변

2

문제는 제대로 벗어나지 못하는 것입니다. 수동으로 특정 패턴을 바꾸는 대신 추가하는 각 매개 변수에 encodeURIComponent을 사용해야합니다. 즉

, 코드는 다음과 같이한다 : 대답 마이클

var subject = ... // whatever you do to create this string 
var body = ... // whatever you do to create this string 
var encodedSubject = encodeURIComponent(subject); 
var encodedBody = encodeURIComponent(body); 
var emailLink = 'mailto:?subject=' + encodedSubject + '&body=' + encodedBody; 
// ... use emailLink 
+0

감사합니다, 내 자바 스크립트는 아마 내가이 선 작업을 할 수있는 방법을 정확하게 나를 인도 할 수 약간의 제한 : body + = "link :"+ "" + location.href + ""; 내 메일에 링크 만 표시하고 싶습니다. – Pavel

+0

예. 기본적으로 두 가지 방법으로이 작업을 수행 할 수 있습니다. 첫 번째 방법은 document.createElement() 및 element.appendChild()와 같은 DOM (문서 객체 모델) API를 사용하여 이러한 요소를 만드는 방법입니다.이 경우 link.href = value에 간단히 "href"속성을 할당 할 수 있습니다 링크의 또는 문자열 연결을 통해 수행 할 수도 있습니다. 그렇게하면 문자열이 제대로 이스케이프되도록해야합니다. 당신이하고있는 일은 전체 URL을 포함하므로 encodeURI()를 사용하여 문자열에 넣어야합니다. 개인적으로 나는 다른 방법을 추천한다. –