支持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编程起步(第七课)
Feb 27 Javascript
javascript实现的动态文字变换
Jul 28 Javascript
JavaScript获得选中文本内容的方法
Dec 02 Javascript
JavaScript中检测变量是否存在遇到的一些问题
Nov 11 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
Sep 30 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
Aug 01 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 Javascript
Vue实现一个图片懒加载插件
Mar 11 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 Javascript
使用layer弹窗,制作编辑User信息页面的方法
Sep 27 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
Aug 31 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 魔术函数使用说明
2010/05/14 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
jquery 滚动条事件简单实例
2013/07/12 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
js表达式与运算符简单操作示例
2020/02/15 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python外星人入侵游戏编程完整版
2020/03/30 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
Python创建临时文件和文件夹
2020/08/05 Python
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
英语老师推荐信
2014/02/26 职场文书
社区服务标语
2014/07/01 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
Linux中sftp常用命令整理
2022/06/28 Servers