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


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的内存泄漏
Mar 04 Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
Json对象与Json字符串互转(4种转换方式)
Mar 27 Javascript
深入分析jquery解析json数据
Dec 09 Javascript
node.js开机自启动脚本文件
Dec 24 Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
Nov 28 Javascript
Express的HTTP重定向到HTTPS的方法
Jun 06 Javascript
浅谈Webpack下多环境配置的思路
Jun 27 Javascript
js实现九宫格布局效果
May 28 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
php中的MVC模式运用技巧
2007/05/03 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
帝国cms常用标签汇总
2015/07/06 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
Python中pass的作用与使用教程
2020/11/13 Python
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
简历中个人自我评价范文
2013/12/26 职场文书
优秀员工表扬信
2014/01/17 职场文书
元旦促销方案
2014/03/15 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
计划生育标语
2014/06/23 职场文书
励志演讲稿大全
2014/08/21 职场文书
五五普法心得体会
2014/09/04 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript