在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 相关文章推荐
一个JS翻页效果
Jul 23 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
jQuery中parents()和parent()的区别分析
Oct 28 Javascript
早该知道的7个JavaScript技巧
Jun 21 Javascript
基于AngularJS实现iOS8自带的计算器
Sep 12 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
Feb 05 Javascript
Angular.js中处理页面闪烁的方法详解
Mar 09 Javascript
javascript按顺序加载运行js方法
Dec 01 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
解决layui使用layui-icon出现默认图标的问题
Sep 11 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
ext实现完整的登录代码
2008/08/08 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
jQuery 添加元素和删除元素的方法
2020/07/15 jQuery
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
python如何使用unittest测试接口
2018/04/04 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python中函数参数匹配模型详解
2019/06/09 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
会计专业自我鉴定范文
2013/12/29 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
《散步》教学反思
2014/03/02 职场文书
酒店节能减排方案
2014/05/26 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
企业党建工作总结2015
2015/05/26 职场文书
新郎婚礼致辞
2015/07/27 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书