2014-06-26 25 views
-1

试图创建一个按钮(或链接)从html表单textarea内下载数据并保存为XML文件。我可以解释为什么,但它会持续下去。将表单文本文件下载为XML文件。适用于IE10,但不适用于Chrome35或Firefox30

这里是我的工作(仅在IE10中)文本示例。我希望它能够在Chrome和Firefox中运行,但到目前为止还没有运气,有什么想法?

我并不需要什么特别的,只是扔在一个变量中的数据,把变到一个新文件,并提示另存为filename.xml中

<html> 

<head> 
<script lang="javascript"> 
function download(){ 
    var xmlContent = document.getElementById("Kitchen").innerHTML; //here we load our xml data 
    var blob = new Blob([xmlContent], { 
     type: "text/xml;charset=utf-8;" 
    }); 
    navigator.msSaveBlob(blob, "SaveAsYourFileNameHere.xml"); 
} 
</script> 
</head> 

<body style="background-color: rgb(225,225,225)"> 
<br> 
<form id="House"> 
    <textarea id="Kitchen"cols="20" rows="10">This is the Kitchen</textarea> 
</form> 
<br> 
<a href="#" onClick="download()">Download Xml</a><br> 
<br> 
</body> 

</html> 

回答

0

斑点只能在以IE FF和铬考虑数据的URI

https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs

喜欢的东西:

<script type="text/javascript"> 
     function base64_encode(data) { 
      // discuss at: http://phpjs.org/functions/base64_encode/ 
      // original by: Tyler Akins (http://rumkin.com) 
      // improved by: Bayron Guevara 
      // improved by: Thunder.m 
      // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
      // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
      // improved by: Rafa? Kukawski (http://kukawski.pl) 
      // bugfixed by: Pellentesque Malesuada 
      // example 1: base64_encode('Kevin van Zonneveld'); 
      // returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' 
      // example 2: base64_encode('a'); 
      // returns 2: 'YQ==' 

      var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/='; 
      var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, 
        ac = 0, 
        enc = '', 
        tmp_arr = []; 

      if (!data) { 
       return data; 
      } 

      do { // pack three octets into four hexets 
       o1 = data.charCodeAt(i++); 
       o2 = data.charCodeAt(i++); 
       o3 = data.charCodeAt(i++); 

       bits = o1 << 16 | o2 << 8 | o3; 

       h1 = bits >> 18 & 0x3f; 
       h2 = bits >> 12 & 0x3f; 
       h3 = bits >> 6 & 0x3f; 
       h4 = bits & 0x3f; 

       // use hexets to index into b64, and append result to encoded string 
       tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); 
      } while (i < data.length); 

      enc = tmp_arr.join(''); 

      var r = data.length % 3; 

      return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); 
     } 

     var str="Hi my name is Adam and I love Javascript"; 
     var str64=base64_encode(str); 
     var a = document.createElement('a'); 
     if(window.navigator.msSaveOrOpenBlob){ 
      var fileData = str; 
      blobObject = new Blob([str]); 
      a.onclick=function(){ 
       window.navigator.msSaveOrOpenBlob(blobObject, 'MyFile.csv'); 
      } 
     }else{ 
      a.setAttribute('href','data:text/csv;headers=Content-Disposition%3A%20attachment%3B%20filename%3D%22with%20spaces.csv%22%0D%0AContent-Language%3A%20en,%E2%88%9A;base64,' + str64,'MyFile.csv'); 
     } 
     a.appendChild(document.createTextNode('Click to Download')); 
     document.body.appendChild(a); 
    </script> 
相关问题