0

我正在开发一个 Firefox 插件,它应该使用两种风格将 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 看到,文本被复制到剪贴板,但我无法将它粘贴到任何地方。难道我做错了什么?

4

1 回答 1

1

您做出错误的假设,即getSelection()返回带有当前选择的 html 表示形式的字符串。

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

需要做更多的工作。

枚举选定的范围(用户可能进行了多项选择),克隆每个范围,将内容附加到 div,然后该 div 的 innerHTML 属性就是您要查找的内容。

请记住,您还必须处理具有相对 url(src、href)的属性并将它们转换为绝对。

于 2013-06-29T14:05:40.267 回答