在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 相关文章推荐
对YUI扩展的Gird组件 Part-2
Mar 10 Javascript
js数组的操作详解
Mar 27 Javascript
js 时间格式与时间戳的相互转换示例代码
Dec 25 Javascript
详解JavaScript的while循环的使用
Jun 03 Javascript
全面解析bootstrap格子布局
May 22 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
Dec 23 Javascript
微信小程序form表单组件示例代码
Jul 15 Javascript
Vue 组件的挂载与父子组件的传值实例
Sep 02 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
Oct 01 Javascript
jQuery实现简单评论区功能
Oct 26 jQuery
简单谈谈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
paypal即时到账php实现代码
2010/11/28 PHP
简单的php文件上传(实例)
2013/10/27 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
Django验证码的生成与使用示例
2017/05/20 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
英文版区域经理求职信
2013/10/23 职场文书
团代会开幕词
2015/01/28 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
社区结对共建协议书
2016/03/23 职场文书
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers