2014-11-07 2 views
1

Я использую angularjs и пытаюсь создать систему загрузки vcard, созданного в javascript. Для того, чтобы vcard работал на мобильном устройстве, данные необходимо загрузить через тег. Проблема заключается в том, что каждый раз, когда я устанавливаю href = "data: text/vcard," + string, он сохраняет vCard, но удаляет новые строки. vCards работают только с новыми линиямитег href данные с новыми линиями

Есть ли способ сохранить символы новой строки при сохранении данных?

$scope.saveVcard = function(){ 
    var user = $scope.member; 
    var out_string = 'BEGIN:VCARD\nVERSION:2.1\n\rN:' + user.last_name + ';' + user.first_name + ';;;\n\r'; //name 
    out_string += 'FN:' + user.first_name + ' ' + user.last_name + '\n\r';//FN 
    if (user.phone){ 
    out_string += 'TEL;CELL:' + user.phone + '\n\r';} //Phone 
    if (user.email){ 
    out_string += 'EMAIL;PREF;INTERNET:' + user.email + '\n\r';}//Email 
    if (user.prof_pic){ 
    out_string += 'PHOTO;PNG:'+user.prof_pic + '\n\r';}//picture 
    out_string += 'END:VCARD'; 
      var a   = document.createElement('a'); 
      a.href  = 'data:text/vcard,' + out_string; 
      a.target  = '_blank'; 
      a.download = 'contact.vcf'; 
      console.log(a.href); 
      document.body.appendChild(a); 
      a.click(); 
      document.body.removeChild(a); 
+0

Соответствующая последовательность строк для vCards - «\ r \ n», а не «\ n \ r». :) – Michael

ответ

2

Ага, я понял, просто используйте функцию encodeURIComponent().

var a = document.createElement('a'); 
     a.href  = 'data:text/vcard,' + encodeURIComponent(out_string); 
     a.target  = '_blank'; 
     a.download = 'contact.vcf'; 
     console.log(a.href); 
     document.body.appendChild(a); 
     a.click(); 
     document.body.removeChild(a); 
Смежные вопросы