在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 AJAX实现目录浏览与编辑的代码
Oct 21 Javascript
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
Jan 23 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 Javascript
JavaScript判断浏览器类型的方法
Feb 10 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
javascript实现随机显示星星特效
Jan 28 Javascript
你不知道的 javascript【推荐】
Jan 08 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
Node.js利用console输出日志文件的方法示例
Apr 27 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 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写出自己的BLOG系统 2
2010/04/12 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
全面理解闭包机制
2016/07/11 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
python对文件的操作方法汇总
2020/02/28 Python
Python编写万花尺图案实例
2021/01/03 Python
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
通信专业个人自我鉴定
2013/10/21 职场文书
计算机应用专业毕业生求职信
2013/10/24 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
工作分析计划书
2014/04/30 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
档案管理员岗位职责
2015/02/12 职场文书
领导欢送会主持词
2015/07/06 职场文书
同事欢送会致辞
2015/07/31 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL