在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 相关文章推荐
JavaScript 指导方针
Apr 05 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
Apr 14 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
Jan 29 Javascript
Javascript设计模式之观察者模式(推荐)
Mar 29 Javascript
浅析Bootstrip的select控件绑定数据的问题
May 10 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
详解vue 数组和对象渲染问题
Sep 21 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
JavaScript中的 new 命令
May 22 Javascript
Node.js fs模块原理及常见用途
Oct 22 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
PHP strtr() 函数使用说明
2008/11/21 PHP
二招解决php乱码问题
2012/03/25 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
python处理html转义字符的方法详解
2016/07/01 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
详解python播放音频的三种方法
2019/09/23 Python
python迭代器常见用法实例分析
2019/11/22 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
java字符串格式化输出实例讲解
2021/01/06 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
最经典的商业地产项目广告词
2014/03/13 职场文书
我的求职择业计划书
2014/04/04 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
投标承诺函范文
2015/01/21 职场文书
街道社区活动报告
2015/02/05 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
mysql 排序失效
2022/05/20 MySQL
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript