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


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-简单的计算器实现步骤分解(附图)
May 30 Javascript
Node.js开发指南中的简单实例(mysql版)
Sep 17 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
Nov 26 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
Aug 26 Javascript
javascript加减乘除的简单实例
Jul 12 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
微信小程序getPhoneNumber获取用户手机号
Sep 29 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
Dec 07 Javascript
微信小程序动态显示项目倒计时
Jun 20 Javascript
微信小程序 bindtap 传参的实例代码
Feb 21 Javascript
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
跨浏览器开发经验总结(三)   警惕“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+mysql 实现身份验证代码
2010/03/24 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
如何实现动态删除javascript函数
2007/05/27 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
python的unittest测试类代码实例
2017/12/07 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
eclipse创建python项目步骤详解
2019/05/10 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
What is EJB
2016/07/22 面试题
农民致富事迹材料
2014/01/23 职场文书
会计专业自荐信
2014/06/03 职场文书
2015年班干部工作总结
2015/04/29 职场文书
Javascript webpack动态import
2022/04/19 Javascript
mysql幻读详解实例以及解决办法
2022/06/16 MySQL