2013-06-28 58 views
0

我正在研究一個Firefox插件,該插件應該使用兩種版本:text/unicode和text/html將HTML文檔的片段複製到剪貼板。將選定的文本/ 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

您做出了錯誤的假設,getSelection()返回一個字符串與當前選擇的html表示形式。

但行var textHtml = window.getSelection();只是簡單地將Selection object分配給textHtml

需要多一點工作。

枚舉所選範圍(用戶可能已經完成了多個選擇),clone each range,將內容附加到div,然後該div的innerHTML屬性就是您要查找的內容。

請記住,您還必須照顧與相對URL(SRC,HREF)的屬性,並將它們轉爲絕對。