支持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
Aug 13 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
js string 转 int 注意的问题小结
Aug 15 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
JavaScript实现弹出子窗口并传值给父窗口
Dec 18 Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 Javascript
AngularJS 所有版本下载地址
Sep 14 Javascript
Javascript中for循环语句的几种写法总结对比
Jan 23 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
vue实现页面加载动画效果
Sep 19 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
Sep 29 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
把77A收信机改造成收音机
2021/03/02 无线电
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
window.open的功能全解析
2006/10/10 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
Python中列表的一些基本操作知识汇总
2015/05/20 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
干部行政关系介绍信
2014/01/17 职场文书
财务内勤岗位职责
2014/04/17 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
五年级学生期末评语
2014/12/26 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python
Vue的过滤器你真了解吗
2022/02/24 Vue.js
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python