在JavaScript中如何解决用execCommand(


Posted in Javascript onOctober 19, 2015

本解决方案仅适应asp.net mvc 开发环境,其他环境仅供参考。

问题描述:在开发中遇到这样的需求,保存页面,通常使用JavaScript的saveAs进行保存,各浏览器对saveAs支持,见下表。

在JavaScript中如何解决用execCommand(

代码一:初始保存的代码,只有IE6,7,8支持。

function CmdSave() {
  var OW = window.open('', "_blank", "");
  var DD = new Date();
  OW.document.open();
  var content = document.getElementById("content").innerHTML;
  OW.document.write(content);
  var name = mineName + "-" + $("#selDate").val() + ".htm";
  OW.document.execCommand("saveAs", false, name);//执行保存,IE6,IE7,IE8有效
  OW.close();
 }

解决方案:考虑到下载兼容性好,也能起到保存页面的作用,故采用了先生成页面,再下载页面这样的解决方案。

代码二:采用下载方式保存页面代码。

function CmdSave() {
  var css = "<style type='text/css'>.trNormalTd { border-top-width: 0px; border-bottom-width: 0px;text-align:right;}.trLastTd {border-top-width: 0px;text-align:right;}.trFirstTd{border-bottom-width: 0px;text-align: right;}</style>";
  var html = document.getElementById("content").innerHTML;
  var content = css + html;
  var name = mineName + "-" + $("#selDate").val() + ".htm";
  savePage(content, name);
}
 //content 内容 fileName 文件名 先在服务器生成页面,然后再下载生成的页面
 function savePage(content, fileName) {
  $.ajax({
   type: 'post',
   dataType: 'text',
   url: 'FXBB/BCYM',
   data: {
    content: content,
    fileName: fileName
   },
   success: function (result) {
    var url = "YXGZ/DBFX/BBCX/FXBB/XZYM?fileName=" + fileName;
    var downloadUrl = window.location.protocol + "//" + window.location.host + "/" + url;
    window.open(downloadUrl);//下载页面
    //deleteFile(fileName);
   },
   error: function (msg) {
    alert("保存出错");
   }
  });
 }
  //保存页面
  public int BCYM(string content, string fileName)
  {
   string path = System.AppDomain.CurrentDomain.BaseDirectory;
   path = Path.Combine(path, @"Upload\FXBB");
   //清空保存文件文件夹文件
   foreach (string d in Directory.GetFileSystemEntries(path))
   {
    if (File.Exists(d))
    {
     File.Delete(d);
    }
   }
   //生成要保存的页面
   path = System.AppDomain.CurrentDomain.BaseDirectory;
   path = Path.Combine(path, "Upload/FXBB/" + fileName);
   using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))// File.AppendText(path))
   {
    sw.WriteLine(content);
    sw.Flush();
   }
   return 1;
  }
//下载页面
  public void XZYM(string fileName)
  {
   string path = System.AppDomain.CurrentDomain.BaseDirectory;
   path = Path.Combine(path, @"Upload\FXBB\" + fileName);
   string filePath = path;//Server.MapPath("DownLoad/aaa.zip");//路径
   //以字符流的形式下载文件
   FileStream fs = new FileStream(filePath, FileMode.Open);
   byte[] bytes = new byte[(int)fs.Length];
   fs.Read(bytes, 0, bytes.Length);
   fs.Close();
   System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
   //通知浏览器下载文件而不是打开
   System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
   System.Web.HttpContext.Current.Response.WriteFile(filePath);
  }

以上内容就是本文关于execcommand兼容性问题的全部叙述,希望大家喜欢。

Javascript 相关文章推荐
jQuery对表单元素的取值和赋值操作代码
May 19 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
jqGrid读取选择的多行的某个属性代码
May 18 Javascript
详解AngularJS中的表达式使用
Jun 16 Javascript
使用jquery实现仿百度自动补全特效
Jul 23 Javascript
jQuery多条件筛选如何实现
Nov 04 Javascript
js实现上传文件添加和删除文件选择框
Oct 24 Javascript
打字效果动画的4种实现方法(超简单)
Oct 18 Javascript
每天学点Vue源码之vm.$mount挂载函数
Mar 11 Javascript
a标签调用js的方法总结
Sep 05 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
Feb 25 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 Javascript
简单谈谈Javascript中类型的判断
Oct 19 #Javascript
AngularJS 实现按需异步加载实例代码
Oct 18 #Javascript
学习javascript的闭包,原型,和匿名函数之旅
Oct 18 #Javascript
Javascript中的数据类型之旅
Oct 18 #Javascript
谈谈JavaScript自定义回调函数
Oct 18 #Javascript
JS实现的网页背景闪电闪烁效果代码
Oct 17 #Javascript
JavaScript实现点击按钮切换网页背景色的方法
Oct 17 #Javascript
You might like
PHP VS ASP
2006/10/09 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
编程语言Python的发展史
2014/09/26 Python
深入Python函数编程的一些特性
2015/04/13 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
是否有自动比较结构的方法
2015/06/03 面试题
Ejb技术面试题
2015/04/29 面试题
初三家长会邀请函
2014/01/18 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
离婚起诉状范本
2015/05/19 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL