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


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 相关文章推荐
JS中的数组的sort方法使用示例
Jan 22 Javascript
JavaScript数据结构和算法之图和图算法
Feb 11 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
Jan 08 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
May 31 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
概述如何实现一个简单的浏览器端js模块加载器
Dec 07 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
Jan 19 Javascript
jQuery基于cookie实现换肤功能实例
Oct 14 jQuery
微信小程序实现的图片保存功能示例
Apr 24 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
Sep 02 Javascript
微信小程序点击顶部导航栏切换样式代码实例
Nov 12 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 header 跳转
2013/06/17 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
php自动加载代码实例详解
2021/02/26 PHP
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
Express.JS使用详解
2014/07/17 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
九年级科学教学反思
2014/01/29 职场文书
探亲邀请信范文
2014/01/30 职场文书
超市促销活动方案
2014/03/05 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
邀请函样本
2015/02/02 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
MySQL基础(一)
2021/04/05 MySQL
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
使用pandas模块实现数据的标准化操作
2021/05/14 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android