leichenlei
小狐狸
小狐狸
  • UID23139
  • 注册日期2008-03-06
  • 最后登录2008-05-13
  • 发帖数4
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:5150回复:1

JS实现和IE命令一样的复制!?

楼主#
更多 发布于:2008-04-08 17:17
关键我是trans没用对啊,请路过的高手指点

我的复制方法是:

————————————————————————————————————
copyToClipboard:function(txt){//FF 复制到剪切板
    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;
}
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
str.data = txt;
trans.addDataFlavor("html Format");
trans.setTransferData("html",str,txt.length*2);
var clipid = Components.interfaces.nsIClipboard;
if (!clipid){
return;
}
clip.setData(trans,null,clipid.kGlobalClipboard);

——————————————————————————————————
上面的代码
向word里可以粘贴,而且可以继承文字样式。
向不支持html格式的其他软件里粘贴,“粘贴”选项不可用。

但是
在不支持html格式的记事本里也应该可以粘贴不带样式的文字啊。
以下是我收集的trans 都用了,没能用的。

trans.addDataFlavor("application/x-moz-file", "nsIFile");
trans.addDataFlavor("text/x-moz-url");
trans.addDataFlavor("application/x-moz-nativehtml");
trans.addDataFlavor("text/richtext");
trans.addDataFlavor("text/plain ")
trans.addDataFlavor("text/html");
trans.addDataFlavor("html Format");
trans.addDataFlavor("text/unicode");
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-04-22
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
1楼#
发布于:2008-04-08 17:17
使用 Components.classes 只能在本地网页和扩展中生效。如果把网页放到服务器上就没有作用了。

Firefox 现在为了用户的安全禁止了操作剪贴板的函数。最好的办法是提示用户使用Ctrl+C吧。劝告别人改about:config解除禁止也不是很好。
游客

返回顶部