如何在QWebView上获取DOM innerText?

时间:2016-12-12 01:46:13

标签: javascript qt qwebview innertext

如何在QWebView上获取所有document.body.innerText?我使用QT版本5.5.1。

例如,

要加载的html文件

<script>
    document.write("hello world!");
</script>

我希望得到“你好世界”。

所以,我在QT上试过这样的事情

QWebView *wv = new QWebView(this);
QWebFrame *frame = wv->page()->mainFrame();
frame->load(QUrl("file:// ~ file path ~"));
QString string = frame->toPlainText();
// then write string to file for checking

我预计字符串是“hello world”但是,什么都没有。 我搜索并发现了这个link,我改变了这样的代码,但仍然没有。

我是否误解了PlatinText()?我如何在QT 5.5上获得DOM innerText?

1 个答案:

答案 0 :(得分:0)

您没有留出足够的时间来更新页面。加载HTML需要一点时间,更不用说让Javascript执行了。

这里有几个解决方法:

  1. 在致电toPlainText()之前,请先使用QTimer等待几秒钟。这很麻烦,因为没有办法确切知道等待多长时间,但它足以用于演示目的。
  2. 更新Javascript代码,以便在调用document.write()后向C ++代码发回通知。例如,您可以通过WebSocket执行此操作,或使用Qt WebChannel