var fragment = getSelection().getRangeAt(0).extractContents();
DocumentFragment
中,您现在可以像访问任何元素一样访问 fragment
的 childNodes
。cloneContents()
中的括号。其次,变量名有误导性,因为结果对象是一个“文档片段”而不是“范围”。第三,在此片段中的任何图像都将是原始范围中找到的那些图像的克隆品,因此可能无用。第四,这在IE中不起作用。 - Tim Downvar d = document.createElement("div"); d.appendChild(window.getSelection().getRangeAt(0).cloneContents()); var img = $("img", d);
。由于我不需要修改元素,我也可以使用bortao的正则表达式建议。 - Vladimir Panteleev$("img", window.getSelection().getRangeAt(0).extractContents());
不幸的是,您必须使用上述IERange库来支持IE 6/7/8。
值得注意的是:DOM范围将在IE9中实现,并且有关于HTML5中新选择API的讨论
它似乎完全缺乏选择或DOM范围的支持。
是的,原因在于IE不支持选择和DOM范围。您可以在IE的非标准“TextRange”对象之上构建一个抽象层,但由于TextRanges公开的接口极其糟糕,所以它很难、很慢、很复杂,足以成为一个完整的库。例如,参见this one。