复制是一个使用频率特别高的操作,在网页中,一般可以选中要复制的内容,使用快捷键ctrl+c 将内容复制到剪贴板。除了使用系统提供的快捷方式复制网页内容,我们还可以用JS实现复制,这得益于document的execCommand('copy') 命令。
我们可以通过表单元素的select()方法选中内容,表单元素因为textarea限制少于input,所以推荐使用textarea。我们可以动态创建一个textarea元素,将textarea的value属性值设置为上面的innerText属性值,再执行textarea的select方法选中。
上面实现了选中,下面就可以实现复制功能了。
最后一步就可以用execCommand('copy')实现复制了,它可以复制浏览器中选中的文本,比如说上面被textarea选中的文本,复制之后记得移除textarea。
第二步和第三步可以优化一下,创建一个copy函数,函数参数设置为第一步需要复制的文本,返回值为复制的结果。
完整JS示例如下:
使用示例
可以将上面的完整JS示例写入一个JS文件,将JS文件引入HTML中,通过JS点击事件来执行复制函数。
一般来说直接用Javascript创建的话只支持IE,代码如下:
functionCreateShortcut() {try{
varfso = newActiveXObject("Scripting.FileSystemObject")
varshell = newActiveXObject("WScript.Shell")
vartagFolder = shell.SpecialFolders("Desktop")
if(!fso.FolderExists(tagFolder )) {
fso.CreateFolder(tagFolder)
}
if(!fso.FileExists(tagFolder + "\\乐猪软件.lnk")) {
varWshSysEnv = shell.Environment("Process")
iLocal = (WshSysEnv.Item("SystemRoot") +"\\1.ico") //下载到C:\windows\1.ico
iRemote = ("/Images/2.ico") //先下载图标文件,再用自定义图标把首页的图标地址替换
varxPost = newActiveXObject("Microsoft.XMLHTTP")
xPost.Open("GET", iRemote, 0)
xPost.Send()
varsGet = newActiveXObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.ResponseBody )
sGet.SaveToFile( iLocal,2)
varlink = shell.CreateShortcut(tagFolder + "\\编程入门管理系统.lnk")
link.Description = "打开基本软件的快捷方式"
link.Hotkey = "Ctrl+Alt+e"
link.TargetPath = "http://www.lezhu99.com/"
link.IconLocation=iLocal
link.WindowStyle = 3
link.WorkingDirectory = "c:\\blah"
link.Save()
alert("恭喜!快捷方式创建成功!")
}
}
catch(ex){
alert("快捷方式创建失败,可能浏览器不支持!")
}
}
为了支持所有浏览器,我们可以用动态语言来做。
1.php代码:
<?php$Shortcut = "[InternetShortcut]
URL=http://www.0356sh.com
IconFile=http://www.0356sh.com/favicon.ico
IconIndex=0
HotKey=1613
IDList=
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2"
header("Content-Type: application/octet-stream")
header("Content-Disposition: attachment filename=晋城生活服务.url")
echo $Shortcut
?>
HTML中的代码:
<a href="1.php" target="_blank">创建桌面快捷方式</a>