在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 相关文章推荐
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
JS高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
js 表单提交后按钮变灰的实例代码
Aug 16 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
JavaScript中的继承之类继承
May 01 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
Jun 14 Javascript
js Dom实现换肤效果
Oct 21 Javascript
React-Router如何进行页面权限管理的方法
Dec 06 Javascript
JS实现数组的增删改查操作示例
Aug 29 Javascript
JS实现小星星特效
Dec 24 Javascript
JS实现拖动模糊框特效
Aug 25 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
js版本A*寻路算法
2006/12/22 Javascript
Google韩国首页图标动画效果
2007/08/26 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
Python日志模块logging基本用法分析
2018/08/23 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python的依赖管理的实现
2019/05/14 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Python for i in range ()用法详解
2020/09/18 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
Python内置函数locals和globals对比
2020/04/28 Python
Python: glob匹配文件的操作
2020/12/11 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
自我鉴定模板
2013/10/29 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
宿舍管理制度范本
2015/08/07 职场文书
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS