支持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 相关文章推荐
JQueryEasyUI Layout布局框架的使用
Apr 08 Javascript
jQuery阻止同类型事件小结
Apr 19 Javascript
js查找某元素中的所有图片地址的方法
Jan 16 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
Bootstrap每天必学之导航条
Nov 27 Javascript
解析浏览器端的AJAX缓存机制
Jun 21 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
Aug 01 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
详解VUE的状态控制与延时加载刷新
Mar 27 Javascript
Angular.Js之Scope作用域的学习教程
Apr 27 Javascript
element-ui 时间选择器限制范围的实现(随动)
Jan 09 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
May 09 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
8个必备的PHP功能实例代码
2013/10/27 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
javascript中的几个运算符
2007/06/29 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python如何对齐字符串
2020/07/30 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
遗失证明范文
2015/06/19 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS