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


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 相关文章推荐
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
jQuery的事件委托实例分析
Jul 15 Javascript
AngularJS服务service用法总结
Dec 13 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
Dec 26 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
Feb 19 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
AngularJS中$http的交互问题
Mar 29 Javascript
浅谈JS函数节流防抖
Oct 18 Javascript
JS为什么说async/await是generator的语法糖详解
Jul 11 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
Aug 14 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
php正则校验用户名介绍
2008/07/19 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
使用php清除bom示例
2014/03/03 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
python django model联合主键的例子
2019/08/06 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
电脑专业个人求职信范文
2014/02/04 职场文书
作文评语集锦大全
2014/04/23 职场文书
个人安全生产责任书
2014/07/28 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
人代会简报
2015/07/21 职场文书
小学课改工作总结
2015/08/13 职场文书
技术入股协议书
2016/03/22 职场文书
导游词之桂林山水
2019/09/20 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技