是否可以使用javascript或qml从QT中的WebView中加载页面中获取文本?我发现的所有答案都是Java或与QT不相似的。
答案 0 :(得分:2)
在Qt5中,大多数WebView功能都成为未记录的(并且不受支持的)QtWebKit.experimental的一部分。我已经找到is this blog post这些功能的最全面的解释。
在继续之前,请注意:实验性功能可以 - 并且将来 - 在未来版本中发生变化。因此,在运行示例代码时,您将在控制台中看到警告。
这是一个将整个HTML发布到控制台的完整示例。将此更改为仅转储页面的一部分,将HTML发送到其他地方等等应该是相当简单的。
import QtQuick 2.2
import QtWebKit 3.0
import QtWebKit.experimental 1.0
Rectangle {
width: 800
height: 600
WebView {
url: "http://stackoverflow.com/"
anchors.fill: parent
// Enable communication between QML and WebKit
experimental.preferences.navigatorQtObjectEnabled: true;
// When the document loads, post the outerHTML back to the QML layer.
onLoadingChanged: {
if (loadRequest.status === WebView.LoadSucceededStatus) {
experimental.evaluateJavaScript(
"navigator.qt.postMessage(document.documentElement.outerHTML)");
}
}
// When we get the message, dump the string data to the console.
experimental.onMessageReceived: {
console.log(message.data);
}
}
}
总结一下,这是代码的作用: