支持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 函数调用规则
Sep 14 Javascript
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
String.prototype实现的一些javascript函数介绍
Nov 22 Javascript
Sort()函数的多种用法
Mar 20 Javascript
浅谈html转义及防止javascript注入攻击的方法
Dec 04 Javascript
JavaScript仿聊天室聊天记录
Dec 27 Javascript
vue.js实现请求数据的方法示例
Feb 07 Javascript
基于Vue的移动端图片裁剪组件功能
Nov 28 Javascript
JavaScript实现计算多边形质心的方法示例
Jan 31 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 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
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
python模拟事件触发机制详解
2018/01/19 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python实现周期方波信号频谱图
2018/07/21 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
开业庆典策划方案
2014/02/18 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
群众路线党课主持词
2014/04/01 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
python tkinter模块的简单使用
2021/04/07 Python