在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 的addEventListener()及attachEvent()区别分析
May 21 Javascript
JSON 客户端和服务器端的格式转换
Aug 27 Javascript
javascript数组去重方法终极总结
Jun 05 Javascript
javascript学习笔记(四)function函数部分
Sep 30 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
javascript实现的图片预览功能
Mar 25 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
详解 微信小程序开发框架(MINA)
May 17 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
vue.js实现双击放大预览功能
Jun 23 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
Vue的过滤器你真了解吗
Feb 24 Vue.js
简单谈谈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
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
vue-cli2.9.3 详细教程
2018/04/23 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Python3.x中自定义比较函数
2015/04/24 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
python unittest实现api自动化测试
2018/04/04 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
优秀应届生推荐信
2013/11/09 职场文书
毕业生个人求职信范例分享
2013/12/17 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
优秀求职信范文分享
2014/01/26 职场文书
文字自荐书范文
2014/02/10 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers