Я озирался некоторое время, но, кажется, нет простого способа сделать это. jQuery не помогает в наименьшем, это, кажется, полностью испытывает недостаток в любой поддержке диапазонов DOM или выбора. Что-то, что я надеялся, будет так же просто как $.selection.filter('img')
кажется, только является выполнимым с десятками строк кода, имеющего дело с ручным перечислением элементов в диапазонах и несоответствиях реализации браузера (хотя ierange помогает здесь). Какие-либо другие ярлыки?
var fragment = getSelection().getRangeAt(0).extractContents();
Узлы в выделении будут удалены и возвращены в DocumentFragment
, и теперь вы можете получить доступ к childNodes
] из фрагмента
точно так же, как и любой другой элемент.
кажется, что полностью отсутствует поддержка выбора или диапазонов DOM
Да, причина в том, что IE не поддерживает выбор и диапазон DOM. Вы можете построить слой абстракции поверх нестандартных объектов IE TextRange, но из-за чрезвычайно плохого интерфейса, предоставляемого TextRanges, это сложно, медленно и достаточно сложно, чтобы это было полноценной библиотекой. См. Например. этот .
$("img", window.getSelection().getRangeAt(0).extractContents());
К сожалению, вы придется использовать вышеупомянутую библиотеку IERange для поддержки IE 6/7/8.
Примечательно: Диапазон DOM будет реализован в IE9 , и есть разговоры о новых API выбора в HTML5