2009-12-29 35 views
4
我目前使用

以下的獲得從網頁選擇的文本到自定義Firefox擴展:獲得HTML輸出選擇/範圍從網頁在Mozilla Firefox

getSelectedText: function(){ 
    var textWindow = document.commandDispatcher.focusedWindow; 
    var text = textWindow.getSelection();  
    if (text == null) {text =' ';} 
    text = text.toString(); 
    text = text.replace(/^\s*$/ , ""); 
    text = text.replace(/\r/g, "\r"); 
    text = text.replace(/\n/g, "\n"); 
    text = text.replace(/^\s+|\s+$/g , " "); 
    text = text.replace(new RegExp(/\u2019/g), "'"); 
    text = text.replace(new RegExp(/\u201A/g), ","); 
    text = text.replace(new RegExp(/\u201B/g), "'"); 
    return {str:text}; 
} 

這只是正常的純文本。

我的問題是,我想複製以及(有點像網絡剪輯在Safari功能)

使用情況下,網頁中的所有元素 -如果用戶選擇通過與格式的文本和圖像的網頁,我希望底層的HTML也能被複制,這樣我就可以將它準確地粘貼到另一個XUL窗口中 - 如果我願意的話,甚至可以將內容作爲豐富的HTML郵件發送。

任何指針?

+0

出於好奇,你打算如何處理樣式表? – Joel 2009-12-29 03:01:14

+0

@Joel:我不認爲你可以把樣式表拿出來,也就是說,你只是捕獲Html而就是這樣。 – 2010-02-14 04:39:58

+0

但是,如果您希望顯示器具有所有代表性,則必須解決任何鏈接的資源(圖像,CSS等)。 – Joel 2010-02-15 00:03:10

回答

9

嘗試使用此代碼:執行該代碼

var range = window.getSelection().getRangeAt(0); 
var content = range.cloneContents(); 

後,content將包含該選擇DOM節點的副本的文件片段。請注意,事件偵聽器不會被克隆。欲瞭解更多信息,請訪問https://developer.mozilla.org/en/DOM/range.cloneContents

+1

謝謝哈維,這對我很有用!在Chrome上也可以使用 – 2010-02-14 04:39:02

+3

。爲什麼不接受這個答案? – jldupont 2010-05-18 18:17:43