将选择文本/ html复制到剪贴板

时间:2013-06-28 20:14:37

标签: firefox-addon

我正在开发一个Firefox-addon,它应该使用两种方式将HTML文档的片段复制到剪贴板:text / unicode和text / html。

代码如下:

function copySelection() {
    var textUnicode = window.getSelection().toString();
    var textHtml = window.getSelection();
    var trans = Transferable(window);
    trans.addDataFlavor("text/unicode");
    trans.setTransferData("text/unicode", SupportsString(textUnicode), textUnicode.length * 2);
    trans.addDataFlavor("text/html");
    trans.setTransferData("text/html", textHtml, textHtml.length * 2); // *2 because it's unicode                             
    Services.clipboard.setData(trans, null, Services.clipboard.kGlobalClipboard);
    return true;
}

问题是我无法粘贴复制的文本OOWriter(格式化)或其他任何地方(纯文本)。同时我可以看到使用xclip,文本被复制到cliboard,但我无法将其粘贴到任何地方。我做错了吗?

1 个答案:

答案 0 :(得分:1)

你假设getSelection()返回一个带有当前选择的html表示的字符串。

但是var textHtml = window.getSelection();行只是将Selection object分配给textHtml

需要做更多的工作。

枚举所选范围(用户可能已进行多项选择),clone each range,将内容附加到div,然后该div的innerHTML属性就是您要查找的内容。

请记住,您还必须使用相对网址(src,href)处理属性并将其转为绝对属性。