支持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 相关文章推荐
javawscript 三级菜单的实现原理
Jul 01 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
JavaScript判断前缀、后缀是否是空格的方法
Apr 15 Javascript
javascript中数组和字符串的方法对比
Jul 20 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 Javascript
新手vue构建单页面应用实例代码
Sep 18 Javascript
js实现鼠标移动到图片产生遮罩效果
Oct 21 Javascript
js 提取某()特殊字符串长度的实例
Dec 06 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
May 10 Javascript
关于ES6尾调用优化的使用
Sep 11 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下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
javascript天然的迭代器
2010/10/29 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
Python中@property的理解和使用示例
2019/06/11 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
python代码中怎么换行
2020/06/17 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
全国优秀辅导员事迹材料
2014/05/14 职场文书
学雷锋的心得体会
2014/09/04 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
2015年项目工作总结
2015/04/29 职场文书
元旦主持词开场白
2015/05/29 职场文书
雷锋电影观后感
2015/06/10 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
nginx共享内存的机制详解
2022/03/21 Servers