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


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 相关文章推荐
google地图的路线实现代码
Aug 20 Javascript
浅谈javascript中的instanceof和typeof
Feb 27 Javascript
javascript实现table表格隔行变色的方法
May 13 Javascript
JavaScript实现获得所有兄弟节点的方法
Jul 23 Javascript
js实现可键盘控制的简单抽奖程序
Jul 13 Javascript
js基础之DOM中document对象的常用属性方法详解
Oct 28 Javascript
canvas实现环形进度条效果
Mar 23 Javascript
ES6新特性之变量和字符串用法示例
Apr 01 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
vue实现的封装全局filter并统一管理操作示例
Feb 02 Javascript
vue element-ui中table合计指定列求和实例
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
php正则校验用户名介绍
2008/07/19 PHP
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
php字符串截取的简单方法
2013/07/04 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
js异步编程小技巧详解
2017/08/14 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
简单上手Python中装饰器的使用
2015/07/12 Python
python中栈的原理及实现方法示例
2019/11/27 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
大学生演讲稿范文
2014/01/11 职场文书
商场拾金不昧表扬信
2014/01/13 职场文书
捐书活动总结
2014/05/04 职场文书
火灾现场处置方案
2014/05/28 职场文书
中秋节活动总结
2014/08/29 职场文书
小学端午节活动总结
2015/02/11 职场文书
党员评议自我评价
2015/03/03 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js