webkit: как получить фактический контент страницы после того, как контент был добавлен через javascript?

Я хочу получить фактическое содержимое страницы, которую я загрузил в веб-просмотр, после того, как некоторый контент был обновлен некоторым jquery

$(document).ready(function() {
$("#main").append('<p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>Test</p>');
});

После обновления страницы я попытался получить содержимое страницы с помощью следующей команды [синтаксис vala]

web_view.get_main_frame ().get_data_source().get_data().str

но я получаю только исходный контент (даже если загрузка завершена)

с использованием

web_view.get_dom_document().document_element.text_content

Я получаю фактический контент, но теги удаляются.

Думаю, я мог бы пройтись по всему дереву, чтобы получить фактический документ, но должен быть более простой способ сделать это.

РЕДАКТИРОВАТЬ: мое решение

this.web_view.load_finished.connect ((source, frame) => {
 stderr.printf(this.web_view.get_dom_document().body.get_inner_html());
}

Я, вероятно, найду это ужасным, когда прочитаю это через несколько лет, но пока я пойду с этим.


person registeringso    schedule 17.01.2013    source источник


Ответы (2)


В HTML DOM элементы реализуют интерфейс HTMLElement. Интерфейс HTMLElement в WebKit включает outerHTML. Это свойство возвращает строку, содержащую сериализованную разметку элемента и всех его дочерних элементов. Я не знаком с Vala, но на основе ваших фрагментов кода это будет доступно так:

web_view.get_dom_document().document_element.outer_html
person bdash    schedule 19.01.2013
comment
Ага. Это должно быть что-то вроде этого. Моя проблема связана с синтаксисом/привязками vala. Я не могу найти HTMLElementInterface в дереве наследования valadoc.org/#!api= webkit-1.0/WebKit.DOMElement - person registeringso; 13.02.2013
comment
редактировать: это наоборот (valadoc.org/#!api=webkit -1.0/WebKit.DOMHTMLElement) htmlElement находится над куполом, и я не знаю, как получить htmlelement из веб-просмотра (или из webview.dom_document). Да полный newB внутри ;) - person registeringso; 13.02.2013

Правильный ответ в Вале таков:

webview.get_dom_document().get_body().get_inner_html ()
person Chris Timberlake    schedule 31.05.2013