支持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 28 Javascript
JS 如果改变span标签的是否隐藏属性
Oct 06 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
Aug 15 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 Javascript
asp.net中oracle 存储过程(图文)
Aug 12 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
Feb 18 Javascript
Vue异步组件使用详解
Apr 08 Javascript
javascript实现动态显示颜色块的报表效果
Apr 10 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
如何通过setTimeout理解JS运行机制详解
Mar 23 Javascript
微信小程序动态添加和删除组件的现实
Feb 28 Javascript
vuex存取值和映射函数使用说明
Jul 24 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
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
react的hooks的用法详解
2020/10/12 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
Python中标准库OS的常用方法总结大全
2017/07/19 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python与pycharm有何区别
2020/07/01 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
数控专业毕业生求职信范文
2013/09/21 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
积极向上的团队口号
2014/06/06 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
论文评审意见
2015/06/05 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
七年级作文之英语老师
2019/10/28 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android