支持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 for循环设法提高性能
Feb 24 Javascript
js实现网站首页图片滚动显示
Feb 04 Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 Javascript
jquery图片切换实例分析
Apr 15 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
JavaScript中的闭包
Feb 24 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
Dec 18 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 Javascript
浅谈Node 异步IO和事件循环
May 05 Javascript
深入理解JavaScript 箭头函数
May 30 Javascript
原生js+css调节音量滑块
Jan 15 Javascript
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
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 nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
2009/08/21 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
php array_map()函数实例用法
2021/03/03 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
js实现登录与注册界面
2017/11/01 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
js实现购物车功能
2018/06/12 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
Python找出9个连续的空闲端口
2016/02/01 Python
python多线程之事件Event的使用详解
2018/04/27 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
python实现简易学生信息管理系统
2020/04/05 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
python 读取二进制 显示图片案例
2020/04/24 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
铭立家具面试题
2012/12/06 面试题
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
迟到检讨书500字
2014/02/05 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
婚庆主持词大全
2015/06/30 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android