我已经看了一会儿,但似乎没有一种简单的方法可以做到这一点。 jQuery至少没有帮助,它似乎完全缺乏对选择或DOM范围的任何支持。我希望像$.selection.filter('img')
一样简单的东西似乎只能处理数十行代码,这些代码涉及手动枚举范围和browser implementation inconsistencies中的元素(尽管ierange有帮助)。还有其他快捷方式吗?
答案 0 :(得分:2)
var fragment = getSelection().getRangeAt(0).extractContents();
选择中的节点将被移除并在DocumentFragment
中返回,您现在可以像访问任何元素一样访问childNodes
fragment
。
答案 1 :(得分:1)
似乎完全缺乏对选择或DOM范围的任何支持
是的,原因是IE缺乏对选择和DOM Range的支持。你可以在IE的非标准'TextRange'对象之上构建一个抽象层,但是由于TextRanges暴露的界面非常糟糕,它很难,既慢又复杂,它本身就是一个完整的库。见例如。 this one
答案 2 :(得分:1)
$("img", window.getSelection().getRangeAt(0).extractContents());
不幸的是,你必须使用前面提到的IERange库来支持IE 6/7/8。
值得注意的是:DOM Range will be implemented in IE9并且有talks of new selection APIs in HTML5