跨浏览器开发经验总结(四) 怎么写入剪贴板


Posted in Javascript onMay 13, 2010

IE、 Firefox可以支持JavaScript往剪贴板写入内容
IE可以很方便的支持剪贴板内容写入命令,可以使用execCommand(),也可以利用window.clipboardData。

使用execCommand,需要先从页面选中要复制到剪贴板的内容,如以下代码:

var doc = obj.createTextRange(); 
doc.select(); 
doc.execCommand('copy');

使用window.clipboardData的方法如下,代码中同时实现了Firefox下写入剪贴板的功能:
if(window.clipboardData) //IE 
{ 
window.clipboardData.clearData(); 
window.clipboardData.setData("Text", txt); 
} 
else if (window.netscape) 
{ 
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
} 
catch (e) 
{ 
alert("please visit 'about:config' and set signed.applets.codebase_principal_support as 'true'"); 
//提示用户开放浏览器的安全性设置 
} var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard); 
if (!clip) 
return; 
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable); 
if (!trans) 
return; 
trans.addDataFlavor('text/unicode'); 
var str = new Object(); 
var len = new Object(); 
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); 
var copytext = txt; 
str.data = copytext; 



 trans.setTransferData("text/unicode",str,copytext.length*2); 
var clipid = Components.interfaces.nsIClipboard; 
if (!clip) 
return; 



 clip.setData(trans,null,clipid.kGlobalClipboard); 
}

以上代码可以实现在IE、Firefox中往剪贴版写入自定义内容,但是opera和webkit内核浏览器对安全性要求更高,不支持这种javascript直接操作剪贴板内容的方式,只能通过别的脚本语言“曲线救国”了。

Opera 、Safari、Chrome使用ActionScript往剪贴板写入内容

具体的实现可以将原本的动作按钮用flex或flash实现其外观,替换原来的图片或文字按钮,然后在点击该按钮时,执行以下ActionScript脚本:

//从浏览器环境中获得需要写入到剪贴板的内容

var s:String = String(ExternalInterface.call("getURL4Clipboard")); //getURL4Clipboard是页面上return剪贴板内容的javascript方法

//设置剪贴板内容

System.setClipboard(s);

//调用完成设置剪贴板内容后需要继续的JavaScript函数,比如提示用户信息等

ExternalInterface.call("copyURLCompleted"); //copyURLCompleted是页面上的javascript方法,继续执行复制后的工作

Javascript 相关文章推荐
极酷的javascirpt,让你随意编辑任何网页
Feb 25 Javascript
jQuery入门问答 整理的几个常见的初学者问题
Feb 22 Javascript
jquery获得下拉框值的代码
Aug 13 Javascript
js的hasownproperty使用示例
Mar 02 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
Oct 15 Javascript
解决WordPress使用CDN后博文无法评论的错误
Dec 15 Javascript
深入理解JavaScript 函数
Jun 06 Javascript
node.js实现博客小爬虫的实例代码
Oct 08 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
JavaScript设计模式之调停者模式实例详解
Feb 03 Javascript
JS对象和字符串之间互换操作实例分析
Feb 02 Javascript
如何正确理解vue中的key详解
Nov 02 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
May 13 #Javascript
JavaScript prototype属性使用说明
May 13 #Javascript
js 实现复制到粘贴板的功能代码
May 13 #Javascript
js href的用法
May 13 #Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 #Javascript
Js 随机数产生6位数字
May 13 #Javascript
js实现兼容IE6与IE7的DIV高度
May 13 #Javascript
You might like
Apache2 httpd.conf 中文版
2006/11/17 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
php中的静态变量的基本用法
2014/03/20 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
原生js轮播特效
2017/05/18 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
js实现表格数据搜索
2020/08/09 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
python encode和decode的妙用
2009/09/02 Python
使用Python对Access读写操作
2017/03/30 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python skimage 连通性区域检测方法
2018/06/21 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
销售经理竞聘书
2014/03/31 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
摘录式读书笔记
2015/07/01 职场文书
iPhone13再次曝光
2021/04/15 数码科技
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js