在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处理表单示例(javascript提交表单)
Apr 28 Javascript
一个JavaScript的求爱小特效
May 09 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
浅析angularJS中的ui-router和ng-grid模块
May 20 Javascript
深入理解jQuery中的事件冒泡
May 24 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 Javascript
vue项目实现github在线预览功能
Jun 20 Javascript
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
JavaScript代码调试方法实例小结
Jan 05 Javascript
深入理解javascript prototype的相关知识
Sep 19 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
Oct 30 Javascript
js DOM的事件常见操作实例详解
Dec 16 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
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
php实现三级级联下拉框
2016/04/17 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
详解react-redux插件入门
2018/04/19 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python实现扫雷小游戏
2020/04/24 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
合作经营协议书
2014/04/17 职场文书
商家认证委托书格式
2014/10/16 职场文书
2015年项目工作总结
2015/04/29 职场文书
海洋天堂观后感
2015/06/05 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis