支持ie与FireFox的剪切板操作代码


Posted in Javascript onSeptember 28, 2009
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>支持ie与FireFox的剪切板代码</title> 
<script type="text/javascript"> 
function setCopy(_sTxt){ 
try{ 
if(window.clipboardData){ 
window.clipboardData.setData("Text", _sTxt); 
} else if(window.netscape) {//FireFox搞得真复杂呀 
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 
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 = _sTxt; 
str.data = copytext; 
trans.setTransferData("text/unicode", str, copytext.length*2); 
var clipid = Components.interfaces.nsIClipboard; 
if (!clip) return false; 
clip.setData(trans, null, clipid.kGlobalClipboard); 
} 
}catch(e){} 
} 
</script> 
</head> 
<body> 
<input type="button" onclick="setCopy('hello');" value="复制" /> 
<div> 
Firefox/3.0.14下可以运行<br /> 
Firefox/3.5.3下无效<br /> 
不过多考虑这一块了。 
</div> 
</body> 
</html>

下面是ie firefox 读取剪切板中的信息的方法

function getClipboard() 
{ 
if (window.clipboardData) 
{ 
return (window.clipboardData.getData('text')); 
} 
else 
{ 
if (window.netscape) 
{ 
try 
{ 
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
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"); 
clip.getData(trans, clip.kGlobalClipboard); 
var str = new Object(); 
var len = new Object(); 
trans.getTransferData("text/unicode", str, len); 
} 
catch (e) 
{ 
alert("您的firefox安全限制限制您进行剪贴板操作,请打开'about:config'将signed.applets.codebase_principal_support'设置为true'之后重试,相对路径为firefox根目录/greprefs/all.js"); 
return null; 
} 
if (str) 
{ 
if (Components.interfaces.nsISupportsWString) 
{ 
str = str.value.QueryInterface(Components.interfaces.nsISupportsWString); 
} 
else 
{ 
if (Components.interfaces.nsISupportsString) 
{ 
str = str.value.QueryInterface(Components.interfaces.nsISupportsString); 
} 
else 
{ 
str = null; 
} 
} 
} 
if (str) 
{ 
return (str.data.substring(0, len.value / 2)); 
} 
} 
} 
return null; 
}

下面是 ie,firefox下 写入剪切板的代码
copy2Clipboard=function(txt){ 
    if(window.clipboardData){ 
window.clipboardData.clearData(); 
        window.clipboardData.setData("Text",txt); 
    } 
    else if(navigator.userAgent.indexOf("Opera")!=-1){ 
        window.location=txt; 
    } 
    else if(window.netscape){ 
        try{ 
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
        } 
        catch(e){ 
            alert("您的firefox安全限制限制您进行剪贴板操作,请打开'about:config'将signed.applets.codebase_principal_support'设置为true'之后重试,相对路径为firefox根目录/greprefs/all.js"); 
            return false; 
        } 
        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 false; 
        clip.setData(trans,null,clipid.kGlobalClipboard); 
    } 
}

具体的应用,可以参考三水点靠木的代码。
Javascript 相关文章推荐
javascript是怎么继承的介绍
Jan 05 Javascript
js播放wav文件(源码)
Apr 22 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
vue实现在表格里,取每行的id的方法
Mar 09 Javascript
Vue使用mixins实现压缩图片代码
Mar 14 Javascript
element UI upload组件上传附件格式限制方法
Sep 04 Javascript
微信小程序签到功能
Oct 31 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
Vue 设置axios请求格式为form-data的操作步骤
Oct 29 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
javaScript 简单验证代码(用户名,密码,邮箱)
Sep 28 #Javascript
javascript parseInt 大改造
Sep 27 #Javascript
网页自动跳转代码收集
Sep 27 #Javascript
JavaScript中Object和Function的关系小结
Sep 26 #Javascript
js 覆盖和重载 函数
Sep 25 #Javascript
用Javascript 获取页面元素的位置的代码
Sep 25 #Javascript
Javascript 两个窗体之间传值实现代码
Sep 25 #Javascript
You might like
PHP文件读写操作相关函数总结
2014/11/18 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php实现文件预览功能
2017/05/23 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
数据库基础的一些面试题
2012/02/25 面试题
元旦晚会感言
2014/03/12 职场文书
房地产广告策划方案
2014/05/15 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
土地租赁意向书
2014/07/30 职场文书
国庆节慰问信
2015/02/15 职场文书
党员个人自我评价
2015/03/03 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server