支持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 相关文章推荐
Google Suggest ;-) 基于js的动态下拉菜单
Oct 11 Javascript
Javascript的IE和Firefox兼容性汇编(zz)
Feb 02 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
jquery 添加节点的几种方法介绍
Sep 04 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
Jan 06 Javascript
vue2.0 下拉框默认标题设置方法
Aug 22 Javascript
解决vuecli3.0热更新失效的问题
Sep 19 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
Jun 11 Javascript
100行代码实现vue表单校验功能(小白自编)
Nov 19 Javascript
详解小程序如何动态绑定点击的执行方法
Nov 26 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 Javascript
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 输出简单动态WAP页面
2009/06/09 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
JavaScript 原型学习总结
2010/10/29 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
python实现端口转发器的方法
2015/03/13 Python
python中logging包的使用总结
2018/02/28 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
Python多线程获取返回值代码实例
2020/02/17 Python
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
30岁生日感言
2014/01/25 职场文书
开朗女孩的自我评价
2014/02/10 职场文书
民间借贷协议书范本
2014/10/01 职场文书
门面租赁合同范文
2019/08/06 职场文书
在python中实现导入一个需要传参的模块
2021/05/12 Python
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python