支持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 相关文章推荐
在html页面中包含共享页面的方法
Oct 24 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
Dec 28 Javascript
a标签的href和onclick 的事件的区别介绍
Jul 26 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
深入了解JavaScript中的Symbol的使用方法
Jul 28 Javascript
基于JQuery实现分隔条的功能
Jun 17 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
vue表单自定义校验规则介绍
Aug 28 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
javascript设计模式之装饰者模式
Jan 30 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中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
分享PHP守护进程类
2015/12/30 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
jQuery操作cookie的示例代码
2019/06/05 jQuery
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
在Python的Django框架中加载模版的方法
2015/07/16 Python
分析python切片原理和方法
2017/12/19 Python
Python语法分析之字符串格式化
2019/06/13 Python
python英语单词测试小程序代码实例
2019/09/09 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
学习党章思想汇报
2014/01/07 职场文书
音乐教学案例
2014/01/30 职场文书
安全生产大检查方案
2014/05/07 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
公务员年度考核评语
2014/12/31 职场文书
信访工作个人总结
2015/03/03 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
学校财务管理制度
2015/08/04 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
python双向链表实例详解
2022/05/25 Python