Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有换行符的标记href数据_Javascript_Download_Newline_Vcf Vcard - Fatal编程技术网

Javascript 带有换行符的标记href数据

Javascript 带有换行符的标记href数据,javascript,download,newline,vcf-vcard,Javascript,Download,Newline,Vcf Vcard,我正在使用angularjs,并试图创建一个下载用javascript创建的vcard的系统。为了使vcard在移动设备上工作,需要通过a标签下载数据。问题是每次我设置href=“data:text/vcard”+字符串时,它都会保存vcard,但会删除换行符。vCard仅适用于换行符 保存数据时有没有办法保留换行符 $scope.saveVcard = function(){ var user = $scope.member; var out_string = 'BEGIN:V

我正在使用angularjs,并试图创建一个下载用javascript创建的vcard的系统。为了使vcard在移动设备上工作,需要通过a标签下载数据。问题是每次我设置href=“data:text/vcard”+字符串时,它都会保存vcard,但会删除换行符。vCard仅适用于换行符

保存数据时有没有办法保留换行符

$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);

啊哈,我明白了,只需使用函数encodeURIComponent()


vCard的正确换行顺序是“\r\n”,而不是“\n\r:)
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);