Как получить выделенный на странице текст и alt рисунков?
Метод document.getSelection().toString() возвращает выделенный на странице текст, но без alt-ов. Как можно сделать, чтобы с текстом захватывались alt-ы рисунков в тексте, как они захватываются при ручном копировании Ctrl+C?
|
В фурифоксе оно так и работает. В хроме - никак. Только костылить разве что как-то хитро.
|
window.getSelection().getRangeAt(0).startContainer.innerHTML |
Цитата:
upd. Так работает: s = window.getSelection().getRangeAt(0).startContainer.parentNode.innerHTML;Но выдает текст с тегами. |
Для данного HTML выше описаный мной скрипт работает
<body> выделите картинку и кликните по ней <div> <img src="https://akvis.com/img/ico/sketch-200.png" alt="AKVIS Sketch" height=100> </div> </body> <script> document.querySelector('img').addEventListener('click',(e)=>{ alert( window.getSelection().getRangeAt(0).startContainer.innerHTML) }) </script> |
Цитата:
|
Цитата:
Хотя последнее, кстати, не так просто. Стили-то отвалятся у контента. Если это критично, то придется без cloneContents. А именно, делать обход от startContainer до endContainer, причем следующая нода берется так: nextNode = node.firstChild || node.nextSibling || node.parentNode.nextSibling || node.parentNode.parentNode.nextSibling || ... (цикл по парентнодам) |
Alexandroppolus, ага, ничего хитрого. Просто месцок-другой вылавливания багов.)
Нет, если костылить, то проще перед tString() пройтись по всем картинкам и прилепить к ним скрытый span с текстом alt(удалив его с картинки для FF), после - вернуть как было. |
Aetae,
Менять документ по ходу пьесы - тоже так себе. Вдруг там где-то сидит в засаде мутейшенОбзервер) я, в общем, за readonly в таких задачах |
Само собой, костыль на то и костыль.
Но повторить работу Selection.toString, но с "маленьким" дополнением - это задача куда более эпичная, чем кажется на первый взгляд. Если уж мне бы такая поступила - меньше месяца яб на неё не закладывал, а начал бы с того, что открыл сырцы браузера в нужной части.) |
Часовой пояс GMT +3, время: 23:02. |