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


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模拟实现Array的sort方法
Dec 11 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
JavaScript中pop()方法的使用教程
Jun 09 Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 Javascript
js实现前端分页页码管理
Jan 06 Javascript
js+css实现红包雨效果
Jul 12 Javascript
vue 下列表侧滑操作实例代码详解
Jul 24 Javascript
vscode中vue-cli项目es-lint的配置方法
Jul 30 Javascript
Vue-Router的使用方法
Sep 05 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
Sep 11 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
再说下636单管机
2021/03/02 无线电
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
jQuery链式调用与show知识浅析
2016/05/11 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现异步回调机制代码分享
2014/01/10 Python
Apache如何部署django项目
2017/05/21 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
Python3 读取Word文件方式
2020/02/13 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
大学生简历的个人自我评价
2013/12/04 职场文书
安全施工标语
2014/06/07 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
MySQL 条件查询的常用操作
2022/04/28 MySQL
SQL Server中锁的用法
2022/05/20 SQL Server