在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判断浏览器类型的代码
Nov 05 Javascript
js验证是否为数字的总结
Apr 14 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
Dec 14 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
跟我学习javascript的this关键字
May 28 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
浅析JS运动
Dec 28 Javascript
javascript滚轮事件基础实例讲解(37)
Feb 14 Javascript
angular中实现控制器之间传递参数的方式
Apr 24 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
Oct 09 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 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
codeigniter中测试通过的分页类示例
2014/04/17 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
python+django加载静态网页模板解析
2017/12/12 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
numpy中矩阵合并的实例
2018/06/15 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
Django框架实现的分页demo示例
2019/05/25 Python
使用Python实现分别输出每个数组
2019/12/06 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
端午节寄语2015
2015/03/23 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
监守自盗观后感
2015/06/10 职场文书