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


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语法着色引擎(demo及打包文件下载)
Jun 13 Javascript
JavaScript 无符号右移赋值操作
Apr 17 Javascript
xml 封装与解析(javascript和C#中)
Jul 26 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
innerHTML中标签可以换行的方法汇总
Aug 14 Javascript
Javascript中常见的逻辑题和解决方法
Sep 17 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
js模拟F11页面全屏显示
Sep 17 Javascript
js实现简单进度条效果
Mar 25 Javascript
vue下canvas裁剪图片实例讲解
Apr 16 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP安全下载文件的方法
2016/04/07 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
javascript学习之json入门
2016/12/22 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
vue axios请求拦截实例代码
2018/03/29 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python解析树及树的遍历
2016/02/03 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
人事专员职责
2014/02/22 职场文书
工程部岗位职责范本
2015/04/11 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技