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


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 相关文章推荐
关于 byval 与 byref 的区别分析总结
Oct 08 Javascript
prototype 中文参数乱码解决方案
Nov 09 Javascript
js自定义事件代码说明
Jan 31 Javascript
基于jquery的回到页面顶部按钮
Jun 27 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
Jan 05 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
Apr 25 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
微信小程序实现天气预报功能
Jul 18 Javascript
Vue项目打包部署到iis服务器的配置方法
Oct 14 Javascript
vue实现在进行增删改操作后刷新页面
Aug 05 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-FPM进程池探秘
2017/10/17 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
node中间层实现文件上传功能
2018/06/11 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
详解python3中tkinter知识点
2018/06/21 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python里运用私有属性和方法总结
2019/07/08 Python
python之yield和Generator深入解析
2019/09/18 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python自省及反射原理实例详解
2020/07/06 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
荷兰超市:DEEN
2018/03/14 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
运动会稿件50字
2014/02/17 职场文书
新春联欢会主持词
2014/03/24 职场文书
期末复习计划
2015/01/19 职场文书
网聊搭讪开场白
2015/05/28 职场文书
升学宴家长答谢词
2015/09/29 职场文书
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python