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


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 相关文章推荐
JAVASCRIPT IE 与 FF中兼容问题小结
Feb 18 Javascript
jQuery 开天辟地入门篇一
Dec 09 Javascript
Javascript实现的鼠标经过时播放声音
May 18 Javascript
jquery.boxy插件的iframe扩展代码
Jul 02 Javascript
jquery的Tooltip插件 qtip使用详细说明
Sep 08 Javascript
jQuery层级选择器用法分析
Feb 10 Javascript
js querySelector() 使用方法
Dec 21 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 Javascript
vue服务端渲染的实例代码
Aug 28 Javascript
JavaScript模块详解
Dec 18 Javascript
Vue父子组件双向绑定传值的实现方法
Jul 31 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
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
永不消失的title提示代码
2007/02/15 Javascript
javascript编程起步(第六课)
2007/02/27 Javascript
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
python中defaultdict的用法详解
2017/06/07 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
详解Python中is和==的区别
2019/03/21 Python
Python程序控制语句用法实例分析
2020/01/14 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
医学院学生求职简历的自我评价
2013/10/24 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
浅析Django接口版本控制
2021/06/26 Python
Python 全局空间和局部空间
2022/04/06 Python