本文介绍利用JavaScript实现将页面文本框内容保存为本地指定扩展名文件的方法。针对IE浏览器使用execCommand命令,现代浏览器如Chrome和Firefox则通过动态创建a标签触发下载。代码包含HTML结构与JS逻辑,确保跨浏览器兼容并支持自定义文件名与编码。
JS保存文本框内容功能概述
许多网站已实现利用JavaScript保存页面中文本框内容至本地,并指定文件扩展名与编码类型的功能,这在代码教程及JS特效站中尤为常见。那么,具体如何利用JS实现这一功能呢?下文提供了具体的实现代码。
首先,我们需要建立一个HTML文件,具体代码结构如下所示。
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>www.jb51.net</span></a>
</body>
</html>
</textarea>
<button onClick="doSave('code');">另存为</button>
页面中需包含一个textarea文本框和一个button按钮。当点击按钮时,程序会将文本框中的内容另存为名为code.html的文件。
以下是实现该功能的具体JavaScript代码。
JavaScript核心代码解析
<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>的特性来实现保存。代码中的文件名与扩展名均可随意更改,如遇到问题请及时反馈。