获得HTML输出选择/范围从网页在Mozilla Firefox

问题描述:

我目前使用

以下的获得从网页选择的文本到自定义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

尝试使用此代码:执行该代码

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