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


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 相关文章推荐
popdiv
Jul 14 Javascript
javascript jscroll模拟html元素滚动条
Dec 18 Javascript
javascript垃圾收集机制与内存泄漏详细解析
Nov 11 Javascript
EasyUI中combobox默认值注意事项
Mar 01 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
Sep 07 Javascript
NW.js 简介与使用方法
Feb 01 Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 Javascript
JS字符串常用操作方法实例小结
Jun 24 Javascript
Js通过AES加密后PHP用Openssl解密的方法
Jul 12 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 Javascript
vuex(vue状态管理)的特殊应用案例分享
Mar 03 Javascript
详解Vue中的自定义指令
Dec 07 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
javascript Excel操作知识点
2009/04/24 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
Vue实现购物车功能
2017/04/27 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
javascript实现计算器功能
2020/03/30 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
python 日期操作类代码
2018/05/05 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
基于python实现对文件进行切分行
2020/04/26 Python
python def 定义函数,调用函数方式
2020/06/02 Python
python Selenium 库的使用技巧
2020/10/16 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
大学军训自我鉴定
2013/12/15 职场文书
护理职业生涯规划书
2014/01/24 职场文书
创业计划书模版
2014/02/05 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
单位接收证明格式
2015/06/18 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python