То, что я хотел бы сделать, - это позволить пользователю нарисовать прямоугольник поверх веб-сайта и захватить весь HTML, который он видит в этом прямоугольнике.
Я знаю, что это нельзя сделать идеально, но мне было интересно, насколько хорошо это можно сделать.
я думал сделать что-то вроде этого
function getTagsInArea(p1, p2){
var ret = {}
for(x=p1.x;x<p2.x;x+=10){
for(y=p1.y;y<p2.y;y+=10){
var el = document.elementFromPoint(x,y);
if(typeof ret[el] =='undefined'){
ret[el]=el;
}
else{console.log('not appending '+el);}
}
}
return ret;
}
Это дает мне более или менее метки в этой области. Интересно, существует ли общий способ построения деревьев из этих тегов и вывода html.
Я ищу что-то вроде DocumentFragment. Например, selectionContents из этого фрагмента:
var range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
Есть ли очевидный способ сделать это?
Одна из проблем на данный момент состоит в том, что некоторые из тегов, которые я использую с помощью вышеупомянутой функции, - это «body» и «div id =« page », которые содержат то, что я ищу. Любое решение должно было бы выяснить, как взять только те части окружающих тегов, которые необходимы.
Например, если у меня длинный абзац и его половина помечена, я хочу, чтобы возвращался только текст в моем выделении.
Надеюсь, этот вопрос имеет смысл.