2014-09-15 2 views
2

Используя Firefox, я могу использовать window.getSelection(), чтобы получить выделенный текст.Почему использование getRangeAt() удаляет некоторый контент из выделения, в JavaScript?

Если я выбрал изображение, возвращается атрибут alt.

Однако, если я использую .getRangeAt(0), выбор возвращается без атрибута alt.

Я бы хотел, чтобы он присутствовал в моей переменной, как я могу решить эту проблему, пожалуйста?

Вы можете попробовать его здесь: http://jsfiddle.net/Q982A/56/

Если выделить всю строку, Hello. :) печатается первым, а затем Hello..

+1

@MartinErnst Это только кажется, работать в Firefox. – imtheman

+0

@imtheman оправдание, меня отвлек звонок. Комментарий удален. –

ответ

1

Как вы хотите использовать этот диапазон? Диапазон - это объект, метод toString - внутренний текст (см. MDN doc - Range.toString), а не внутренний HTML-код.

Тем не менее, у вас есть весь выбор в этом объекте, и вы можете визуализировать его, создавая фрагмент с ним, например, так:

var sel = window.getSelection(); 
var selRange = sel.getRangeAt(0); 
document.getElementById("test").appendChild(selRange.extractContents()); 

Смотрите эту fiddle.


EDIT:

Вы также можете использовать фрагмент документа, как это: http://jsfiddle.net/Q982A/66/ (для того, чтобы не использовать отображаемый элемент) ...

Смежные вопросы