实现文本的复制(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);
}
最好的方式就是我在‘工作旅程’这个分类中提到过的,用一个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);
}
相关文章推荐
- 实现文本的复制(Firefox和IE都兼容)(一)
- javascript 实现禁止右键,复制,选取文本 (兼容firefox,IE,chrome等主流浏览器)
- js实现复制到系统剪贴板之IE,firefox兼容版
- javascript 实现复制文本添加版权内容(兼容IE)
- JS+flash实现复制功能(兼容IE和firefox)
- js 键盘记录实现(兼容FireFox和IE)
- js 复制内容到剪贴板(兼容IE,Firefox)
- js实现兼容IE和FF的复制功能
- js实现的复制兼容chrome和IE
- js 键盘记录实现(兼容FireFox和IE)
- IE和Firefox都兼容的document.createElement方法实现
- 在线编辑器实现原理(兼容IE和FireFox)
- js 键盘记录实现(兼容FireFox和IE)
- 为何firefox不支持insertRow和insertCell。我如何能让firefox显示和ie显示的效果一样?iframe实现高度自适应,兼容FF、Opera、Safari
- JS实现iframe自适应高度的方法(兼容IE与FireFox)
- 支持所有浏览器的复制文本到剪切板的ASP代码(IE/Firefox/Opera/netscape/chrome/safari)
- js操作XML文件的实现方法兼容IE与FireFox
- onbeforeunload事件中调用Ajax实现用户注销操作(兼容IE、Firefox、Chrome)
- 兼容多浏览器实现半透明(Opera ie firefox)
- onbeforeunload事件中调用Ajax实现用户注销操作(兼容IE、Firefox、Chrome)