ie execCommand saveas为txt文件会在某个长度后换行

  今天在csdn看到一个问题,在IE下exeCommand 调用saveas命令,将某些内容存为txt文件时,当一行的长度大于某个长度时,会自动换行,而实际保存的内容是没有换行的。

  示例代码如下

<script type="text/javascript">
    function fnsave() {
        var tab = document.getElementById("a");
        var contents = tab.innerHTML;
        var winname = window.open('', '_blank', 'top=5000');
        winname.document.open('text/html', 'replace');
        winname.document.write(contents);
        winname.document.close()
        winname.document.execCommand('saveas', false, 'xx.txt');
        winname.close();
    }
</script>

<p id="a">
aaaaaa(config-if-gpon-)#ont add password-auth once-on no-aging omci ont-lineprofile-name ont-srvprofile-name<br />
aaaaaa(config-if-gpon-)#ont add password-auth once-on no-aging omci ont-lineprofile-name ont-srvprofile-name<br /></p>
<input type="button" id="copy" onclick="fnsave()" value="save" />

  保存的xx.txt文件内容打开后截图如下ie execCommand saveas为txt文件会在某个长度后换行

  通过上图对比看到,html页面只有2行,但是存为txt文件后变成了4行,到omci就自动换行了(每行内容到达一定的长度后自动换行)。

  具体原因不明,猜测可能是和保存txt文件弹出的那个窗口大小有关,弹出的那个窗口的选择文件窗体边界(不包含左边的菜单和边界)刚好和omci内容差不多对齐,如下图

ie execCommand saveas为txt文件会在某个长度后换行

  解决办法就是更改打开窗口的文档类型由text/html变更为text/plain,然后将html换行br替换为文本换行符号\r\n,修改后的代码如下

<script type="text/javascript">
    function fnsave() {
        var tab = document.getElementById("a");
        var contents = tab.innerHTML.replace(/<br\s*\/?>/gi,'\r\n');//替换br为\r\n
        var winname = window.open('', '_blank', 'top=5000');
        winname.document.open('text/plain', 'replace');
        winname.document.write(contents);
        winname.document.close()
        winname.document.execCommand('saveas', false, 'xx.txt');
        winname.close();
    }
</script>
<p id="a">
aaaaaa(config-if-gpon-)#ont add password-auth once-on no-aging omci ont-lineprofile-name ont-srvprofile-name<br />
aaaaaa(config-if-gpon-)#ont add password-auth once-on no-aging omci ont-lineprofile-name ont-srvprofile-name<br /></p>
<input type="button" id="copy" onclick="fnsave()" value="save" />

ie execCommand saveas为txt文件会在某个长度后换行

加支付宝好友偷能量挖...


原创文章,转载请注明出处:ie execCommand saveas为txt文件会在某个长度后换行

评论(0)Web开发网
阅读(194)喜欢(0)JavaScript/Ajax开发技巧