您的位置:首页 > 其它

实现文本的复制(Firefox和IE都兼容)(二)

2008-11-27 19:30 232 查看
这个函数兼容了以上两种浏览器,其中IE又另外使用了一种方法,就是直接访问剪贴板。在火狐下则会弹出一个框,说这个操作不安全,所以我不推荐使用这种方式,因为这样会大大降低用户访问的友好性!
最好的方式就是我在‘工作旅程’这个分类中提到过的,用一个Flash与javascript进行交互,绕过了安全机制,至于怎样实现的,我也没有具体地研究了。在此补充一句,外国的程序员就是牛!总是能用我们想不到的方式去实现一个功能!向他们学习,致敬!

copyClipboard=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’之后重试");

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: