使用Javascript从Qt WebView获取文本
Getting text from Qt WebView using Javascript
是否可以从使用javascript或qml在QT中加载的WebView页面中获取文本?我找到的所有答案都是在Java或其他与QT不相似的东西中。
在Qt5中,大多数WebView功能成为未记录的(和不支持的)QtWebKit.experimental的一部分。这篇博文是我发现的对这些特性最全面的解释。
在继续之前,提醒一句:实验特性可以——并且将会——在未来的版本中改变。因此,在运行示例代码时,您将在控制台中看到一个警告。
下面是一个完整的示例,它将整个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);
}
}
}
总结一下,下面是这段代码的作用:
- 将Stack Overflow的主页加载到WebView实例
- 当页面完全加载时,它要求WebView评估读取文档的outerHTML属性的Javascript并将其作为消息返回给QML
- 当收到消息时,它将该HTML转储到控制台
相关文章:
- 需要使用javascript获取输入文本,然后将其添加到句子中
- 从ajax请求中获取原始文本
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 如果所选内容在标记内,如何获取格式化文本
- 如何使用 JQuery 从相对元素获取 html 文本
- Meteor:从Twilio获取SMS文本列表,并将它们插入mongoDB
- 使用 jQuery 从选择标签中抓取文本
- jQuery 获取原始文本(未转义),以便通过下划线模板进一步解析
- 使用 jQuery 从目标页面而不是当前页面获取元素文本
- 用javascript获取svg文本值
- 如何在按子字符串更改后获取旧文本
- JavaScript:获取搜索文本在正文上的滚动位置
- 从p:inputText javascript获取值文本
- AJAX/JS:是否可以在没有提交按钮和刷新页面的情况下获取输入文本的值
- 使用JQUERY/Javascript获取DotNetNuke文本编辑器HTML值
- 使用 casperjs 抓取文本节点的最快方法
- 在Oracle Apex的javascript部分中获取富文本编辑器的HTML文本
- 如何在PHP中获取html文本框值
- Chrome扩展程序获取DOM文本并在弹出窗口中显示.html然后单击按钮
- 如何使用 ajax 实时搜索获取脚本文本框中的搜索值