Доступ к выбранному изображению в поле contenteditable в iframe - PullRequest
0 голосов
/ 15 апреля 2011

У меня проблема с получением src или id или любого другого из выбранного изображения, которое находится внутри contenteditable div-контейнера внутри iframe.Ну, можно получить выделенную текстовую информацию с помощью getSelection () - вызовите так:

window.document.getElementById("monitor").contentWindow.document.getSelection();
// "monitor" = iframe id

Но если я выберу изображение вместо текста, я просто получу пустой результат.Я искал часы и часы, но не нашел никакого решения.Кто-нибудь знает способ, как решить эту проблему?(Я использую Firefox 4)

1 Ответ

1 голос
/ 15 апреля 2011

window.getSelection() (для которого document.getSelection() является псевдонимом в HTML5-совместимых браузерах) возвращает объект Selection, а не строку (это только внешне представляется строкой, поскольку ее toString() метод возвращает выделенный текст). Наиболее полезным аспектом для этого является возможность получить один или несколько DOM Range объектов, представляющих выделение, используя getRangeAt().

Как только у вас есть Range, получить все DOM-узлы, которые он содержит, немного сложно. Вы можете использовать мою библиотеку Rangy , которая добавляет метод getNodes() к его реализации Range:

var sel = rangy.getSelection();
if (sel.rangeCount) {
    var range = sel.getRangeAt(0);
    var elements = range.getNodes([1]);
    for (var i = 0; i < elements.length; ++i) {
        alert("Selected element: " + elements[i].tagName);
    }
}
...