[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器


Posted in Javascript onFebruary 14, 2018

很多网站实现了利用JS保存页面中文本框内容到本地,并另存为指定文件扩展名与编码类型的功能,特别是一些代码教程,JS特效站上更是长见。如何利用JS实现这种功能的呢,下面给出了具体的实现代码

首先建立HTML文件,具体代码如下

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<textarea id="code"> 
<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title></title> 
<style type="text/css"> 
a:hover span{font-weight:bold;color:#F00} 
</style> 
</head> 
<body> 
<a href="#" rel="external nofollow" >鼠标移过来看看这个网址是否变颜色:<span>3water.com</span></a> 
</body> 
</html> 
</textarea>
<button onClick="doSave('code');">另存为</button>

页面中包含一个 textarea文本框和一个 button按钮,点击按钮时把文本框中内容另存为 code.html

下面是实现功能的JS代码

<script language="javascript">
function doSave(obj) {
	obj=document.getElementById('obj');
	if (isIE()){//IE浏览器保存文本框内容
	var winname = window.open('', '_blank', 'top=10000');
	winname.document.open('text/html', 'replace');
	winname.document.writeln(obj.value);
	winname.document.execCommand('saveas','','code.htm');
	winname.close();}
	else{
		saveAs(obj,'code.html');
	}
}
function saveAs(obj,filename){//chrome,火狐等现代浏览器保存文本框内容
	var a=document.createElement('a');
	a.setAttribute('href','data:text/html;gb2312,'+obj.value);
	a.setAttribute('download',filename);
	a.setAttribute('target','_blank');
	a.style.display="none";
	obj.parentNode.appendChild(a);
	a.click();
} 

function isIE()//判断浏览器类型
{ 
  if(!!window.ActiveXObject || "ActiveXObject" in window) 
    return true; 
  else 
    return false; 
} 
</script>

在IE下利用了JS的 execCommand 的功能而在chrome等现代浏览器下这个功能的没有 saveas 所以我们只能通过超链接标签<a>的一些特性来实现保存功能了,代码中的文件名与扩展名都可以随意更改,如有问题你即时反馈我们

Javascript 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
超链接的禁用属性Disabled使用示例
Jul 31 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 Javascript
JavaScript动态绑定详解
Sep 14 Javascript
vuex页面刷新后数据丢失的方法
Jan 17 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
js核心基础之构造函数constructor用法实例分析
May 11 Javascript
通过实例了解js函数中参数的传递
Jun 15 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
Nov 09 Javascript
jQuery实现鼠标拖动图片功能
Mar 04 jQuery
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 #jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 #jQuery
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 #jQuery
浅谈实现vue2.0响应式的基本思路
Feb 13 #Javascript
JS实现的文字间歇循环滚动效果完整示例
Feb 13 #Javascript
React中的refs的使用教程
Feb 13 #Javascript
tween.js缓动补间动画算法示例
Feb 13 #Javascript
You might like
星际争霸中的对战模式介绍
2020/03/04 星际争霸
重置版宣传动画
2020/04/09 魔兽争霸
paypal即时到账php实现代码
2010/11/28 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
酒店前台接待岗位职责
2013/12/03 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
2015年保送生自荐信
2015/03/24 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书