您的位置:首页 > 编程语言

支持ie与FireFox的剪切板操作代码

2010-03-19 18:13 267 查看
<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);

}

}

 

From : http://www.jb51.net/article/20177.htm
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息