Самым простым, но довольно худшим способом было бы простое взлом строки в тексте ответа.
var bodyhtml= html.split('<body>').pop().split('</body>')[0];
В общем случае это неудовлетворительно, но может быть выполнимо, если вы знаете точный форматВозвращаемый HTML-код (например, что атрибуты <body>
отсутствуют, последовательности <body>
и </body>
не используются в комментарии в середине страницы и т. Д.).
Другойвсе еще довольно плохой способ - записать весь документ в innerHTML
недавно созданного <div>
и найти нужные элементы, не заботясь о том, что запись <html>
или <body>
внутри <div>
сломана.Таким образом, вы не сможете надежно отделить дочерние элементы <head>
от элементов в <body>
, но именно это делает, например, jQuery.
Более надежный, но более болезненный способ - использоватьотдельный HTML-документ:
var iframe= document.createElement('iframe');
iframe.style.display= 'none';
document.body.insertBefore(iframe, document.body.firstChild);
var idoc= 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
idoc.write(htmlpage);
idoc.close();
alert(idoc.body.innerHTML);
document.body.removeChild(iframe);
, хотя при этом также будут выполняться все скрипты внутри документа, что может его изменить, что также может быть неудовлетворительным.