从Mozilla Firefox中的网页中取出选择/范围内的HTML

Man*_*rty 4 javascript xul firefox-addon firefox-3

我目前正在使用以下内容将网页中的选定文本转换为自定义的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};
}
Run Code Online (Sandbox Code Playgroud)

这适用于纯文本.

我的问题是我想要复制网页的所有元素(有点像safari中的webclips功能)

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

有什么指针吗?

Xav*_*avi 9

尝试使用此代码:

var range = window.getSelection().getRangeAt(0);
var content = range.cloneContents();
Run Code Online (Sandbox Code Playgroud)

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

  • 也适用于Chrome.为什么不接受这个答案? (3认同)