4

我目前使用以下方法将网页中的选定文本获取到自定义 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 中的 webclips 功能)

用例 -如果用户通过带有格式化文本和图像的网页进行选择,我希望底层 HTML 也被复制,以便我可以准确地将其粘贴到另一个 XUL 窗口中 - 如果我可以将内容作为富 HTML 电子邮件发送所以希望。

任何指针?

4

1 回答 1

9

尝试使用此代码:

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

执行此代码后,content将是一个包含所选 DOM 节点副本的文档片段。请注意,不会克隆事件侦听器。有关更多信息,请访问https://developer.mozilla.org/en/DOM/range.cloneContents

于 2009-12-29T04:40:34.130 回答