我正在开发一个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,但我无法将其粘贴到任何地方。我做错了吗?
答案 0 :(得分:1)
你假设getSelection()
返回一个带有当前选择的html表示的字符串。
但是var textHtml = window.getSelection();
行只是将Selection object分配给textHtml
。
需要做更多的工作。
枚举所选范围(用户可能已进行多项选择),clone each range,将内容附加到div,然后该div的innerHTML属性就是您要查找的内容。
请记住,您还必须使用相对网址(src,href)处理属性并将其转为绝对属性。