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


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 08 Javascript
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
jQuery 联动日历实现代码
May 31 Javascript
js 自定义个性下拉选择框示例
Aug 20 Javascript
js 判断浏览器使用的语言示例代码
Mar 22 Javascript
jquery删除ID为sNews的tr元素的内容
Apr 10 Javascript
JavaScript中使用Math.floor()方法对数字取整
Jun 15 Javascript
Angular 常用指令实例总结整理
Dec 13 Javascript
零基础轻松学JavaScript闭包
Dec 30 Javascript
JQuery复选框全选效果如何实现
May 08 jQuery
跨浏览器开发经验总结(三)   警惕“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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
python入门:这篇文章带你直接学会python
2018/09/14 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
Java基础知识面试要点
2016/07/29 面试题
物流管理毕业生自荐信
2013/10/24 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
英文商务邀请函范文
2015/01/31 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript