上网时很多资料要保存,Ctrl+C,打开记事本,Ctrl+V,选路径,输入文件名,保存…………你觉得麻烦不?用以下脚本可以在InternetExplorer里加入一个菜单,遇到精彩的文章直接框选,点右键,保存,搞定!
把下面的的代码保存为E:\Script\savetext.html(因为下面要用这个路径,所以不要乱改。要改的话请保证下面的reg和你存放的savetext.htmll路径的一致)
<SCRIPT LANGUAGE = "JavaScript">
var oWindow = window.external.menuArguments; //获得执行Save Text菜单项的文档的window对象
var oDocument = oWindow.document;
var oSelect = oDocument.selection;
var oSelectRange = oSelect.createRange();
var selectText = oSelectRange.text; //获得所选择的文字.
var tFilename;
if (selectText.length == 0 || !/\S/.test(selectText)) {
alert("请先选择一段文字!");
}
else {
//去除文字前面的空字符.
selectText = selectText.replace(/^(\s+)(\S+)/,"$2");
//取得文字的第一行.
tFilename = /\n/.test(selectText) ? selectText.substring(0,selectText.search(/\n/)) : selectText;
tFilename = tFilename.length > 18 ? tFilename.substring(0,10) + "..." + tFilename.substring(tFilename.length-6,tFilename.length) : tFilename;
//去除文件名中的换行符、换页符、回车符.
tFilename = tFilename.replace(/\n|\r|\f/g,"");
var errorChar=/(\\|\/|:|\*|\?|"|\<|\>|\|)/
//如果文件名中存在非法字符,则让用户输入文件名.
while (errorChar.test(tFilename) || tFilename==null) {
tFilename=prompt("由于所选文字中包含\ / : * ? < >等不能作为文件名的字符,请重新输入要存储的文件名(不需添加扩展名).",tFilename);
}
var fso, fl, fname;
fso = new ActiveXObject("Scripting.FileSystemObject");
//这里是保存资料的位置,请根据个人情况更改。请保证路径的存在!
fname="D:\\资料\\" +tFilename+ ".txt";
if (fso.FileExists(fname)) {
if (confirm(fname + "已经存在,要替换它吗?")) {
fl = fso.CreateTextFile(fname,true);
fl.Write(selectText);
fl.Close();
alert(fname+" 保存成功!");
}
}
else {
fl = fso.CreateTextFile(fname,true);
fl.Write(selectText);
fl.Close();
oWindow.status = "保存成功!";
}
}
</SCRIPT>
资料默认存放在 D:\资料,可以根据源码提示自定义路径!
保存下列代码为savetext.reg
REGEDIT4
"contexts"=dword:000000f3
@="E:\\script\\savetext.html"
双击这个savetext.reg导入注册表(重装系统后也可以用这个恢复)
重启InternetExplorer,打开一段文字,看看右键~~是不是多了什么!
Last edited by electronixtar on 2006-5-24 at 12:23 ]