支持firefox的“复制到剪贴板”2
2008年5月16日 星期五 轶侠
| 关于电脑
Tags: clipboard, copy, firefox, javascript, 剪贴板, 复制
据说在新版本的firefox中其实可以让用户设置是不是开放让javascript调用剪贴板,默认为不开放。
下面这段代码就是用firefox的合法途径调用剪贴板,并在用户没有设置剪贴板调用的时候告知如何设置。
function copyToClipboard(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("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
}
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);
alert("复制成功!")
}
}
字符串中不能使用\n而要用\x0D\x0A
2008-5-26 11:49
我再来测试一下,可以删除
[ 回复 ]
2008-5-17 15:48
从FF1.0跟进到现在的2.0后,实在受不了时常的崩溃(特别是在同时打开Gmail页面的情况下)和庞大的内存占用。所以又转回到了IE7.0+IEpro了。
p.s,我的站名为Think Again,非Thank again,能否改之。
[ 回复 ]
2008-5-18 12:37
已经改好了,真不好意思
[ 回复 ]
2008-5-18 23:39
Firefox 3 的内存占用情况已经有了质的改善,建议试试:)
[ 回复 ]
2008-5-21 18:11
应该不会出现你说的情况吧?
[ 回复 ]