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文件内容打开后截图如下
通过上图对比看到,html页面只有2行,但是存为txt文件后变成了4行,到omci就自动换行了(每行内容到达一定的长度后自动换行)。
具体原因不明,猜测可能是和保存txt文件弹出的那个窗口大小有关,弹出的那个窗口的选择文件窗体边界(不包含左边的菜单和边界)刚好和omci内容差不多对齐,如下图
解决办法就是更改打开窗口的文档类型由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文件会在某个长度后换行