在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 相关文章推荐
Prototype 学习 工具函数学习($方法)
Jul 12 Javascript
jQuery操作checkbox选择(list/table)
Apr 07 Javascript
JQuery伸缩导航练习示例
Nov 13 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
jquery之基本选择器practice(实例讲解)
Sep 30 jQuery
mint-ui在vue中的使用示例
Apr 05 Javascript
Bootstrap实现省市区三级联动(亲测可用)
Jul 26 Javascript
vue-cli3配置与跨域处理方法
Aug 17 Javascript
JavaScript 面向对象基础简单示例
Oct 02 Javascript
全面解析js中的原型,原型对象,原型链
Jan 25 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 新手入门教程
2009/08/03 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
Bootstrap基础学习
2015/06/16 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
艺术设计专业个人求职信
2013/09/21 职场文书
网吧收银员岗位职责
2013/12/14 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
主题班会演讲稿
2014/05/22 职场文书
洗手间标语
2014/06/23 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
战友聚会致辞
2015/07/28 职场文书