支持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 相关文章推荐
用JS控制回车事件的代码
Feb 20 Javascript
js调用webservice中的方法实现思路及代码
Feb 25 Javascript
js通过元素class名字获取元素集合的具体实现
Jan 06 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
Sep 03 Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
Mar 03 Javascript
JavaScript ES2019中的8个新特性详解
Feb 20 Javascript
利用js canvas实现五子棋游戏
Oct 11 Javascript
JavaScript实现HTML导航栏下拉菜单
Nov 25 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
for循环连续求和、九九乘法表代码
2012/02/20 PHP
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
php中动态调用函数的方法
2015/03/16 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
jquery json 实例代码
2010/12/02 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
理解javascript正则表达式
2016/03/08 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
2014年驻村干部工作总结
2014/11/17 职场文书
先进个人评语大全
2015/01/04 职场文书
教师创先争优承诺书
2015/04/27 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
七年级作文之环保作文
2019/10/17 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
MySQL系列之四 SQL语法
2021/07/02 MySQL
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers