问题标签 [qwebkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 用 C++ 解析 HTML(最好使用 Qt)
我正在尝试使用 C++ 解析一些 HTML 以从 HTML 中提取所有 url(这些 url 可以在 href 和 src 属性内)。
我尝试使用 Webkit 为我完成繁重的工作,但是由于某种原因,当我用 HTML 加载框架时,生成的文档全错了(如果我让 Webkit 从 Web 获取页面,生成的文档就好了,但 Webkit 也下载所有图像、样式和脚本,我不想要)
这是我试图做的:
我究竟做错了什么?有没有用 Qt 解析 HTML 的简单方法?(或其他一些轻量级库)
qt - 如何更改qwebview的背景图片、颜色和字体颜色
我想更改我的 webview 的背景图像、颜色和字体颜色。我尝试了 setBackgroundRole 方法,但它只有很少的颜色。它没有我想要的颜色。而且我找不到如何设置字体颜色和背景图像。你有什么想法来解决这个问题吗?
qtwebkit - QtWebKit QApplication 调用两次
我正在从 Flask 调用一个抓取类,并且第二次实例化一个新的 Webkit() 类(QApplication)时,它会退出我的 Flask 应用程序。
如何多次重新运行 Qt GUI 应用程序并将其包含在内,这样它就不会关闭“外部”应用程序?
进一步说明,Qt 是事件驱动,调用 QApplication.quit() 不仅会关闭事件循环,还会关闭 Python。尽管永远不会继续执行其余代码,但不调用 quit()。
qt - 如何阻止 QHttp/QtWebKit 缓存页面
最近我发现我可以修改一个在线存储的 txt 文件,然后当我使用QHttp获取它时,我仍然得到以前的版本。我的代码也使用了QtWebKit,所以这可能与问题有关吗?或者,也许我只是缺少一个阻止缓存的设置?
(我在 Windows 7 下使用 Qt 4.7.3 并使用 Visual Studio 2010 插件进行编译)
我正在执行以下操作以防止QtWebKit缓存任何内容-
我用来加载 txt 文件的代码如下 -
我用来对应的插槽是 -
但是,一旦它从互联网上获取了 txt 文件,它似乎就会在某处/以某种方式缓存它。无论我在 txt 文件中进行什么更改,当我运行我的代码时,它仍然会缓冲原始文件。
我已经尝试过 OrcunC 的建议(如下),但这会导致收到一个空字符串,而不是 txt 文件的内容 -
我还尝试以不同的方式实现它,如下所示,但得到的结果与缓存 txt 文件相同。即使使用bool fromCache = reply->attribute( QNetworkRequest::SourceIsFromCacheAttribute ).toBool( )检查已完成插槽中的QNetworkReply,但返回false。
我现在已经无能为力了,所以非常感谢任何人指出我正确的方向。
javascript - QWebFrame addToJavaScriptWindowObject() 对象在 Javascript 中未定义
我又开始深入研究 C++ 和 Qt,并且一直在研究 WebKit Javascript/Qt 绑定。我的所有活动部件都在工作,除了我的 QObject 子类在 Javascript 端是“未定义的”。这是我遇到问题的简单测试应用程序:
我的主窗口实现:
你好.cpp
你好.h
上面提到的 index.html 文件做了一个简单的alert(Hello.say())
调用,但是这样做typeof Hello
,我得到了 undefined。
我对 C++ 有点生疏,而且对 Qt 很陌生,所以我确信这是一个菜鸟错误,但我很难过。
javascript - QWebKit - 运行页面的 javascript 函数?
基本上我想进入我的路由器设置,
设置一个检查按钮,然后在页面上调用一个函数,
所有这些都是以编程方式进行的。
我知道执行此操作的所有 javascript,
并且可以通过 Google Chrome 控制台执行此操作。
我可以通过 QWebKit 在语法上执行它,
但实际页面不受影响。
(是的,此代码要求我已经登录到我的路由器设置)
我知道 JavaScript 正在运行,因为我可以使用警报对其进行测试。
但是,路由器的 html“checked()”函数或复选框不会运行/更改。
就像我实际上并没有与页面交互,而是与副本交互。
我在这里犯了一个严重的新手错误吗?
规格:
python 2.7
PyQt4
QWebKit
Windows 7
qt4 - Signal QWebPage::loadFinished(bool) 返回两次?
我遇到了 QWebPage::loadFinished (bool) 信号的问题,它回调了两次,这正常吗?(根本没有链接,例如HTTP状态302)
考虑下面的代码,整个事情可能会导致问题,试图在该插槽中加载另一个链接,这会是一个问题吗?
如果我qDebug() << thisUrl;
每次在loadFinished(bool)
slot 中执行一次,我可以看到 3 次,这是正常的吗,一次用于 url XXX
,两次用于 url YYY
,最后两个链接完全相同。
qt - 是否值得使用 QTextBrowser 在后台解析和修改 HTML 页面而不是 QWebPage?
纯粹出于学习 C++ 和 Qt 的目的,我正在编写一个基于 Qt 的小程序,它从本地目录读取 HTML 文件(最多数百个),修改它们并将它们写回另一个本地目录。
QWebPage
我的第一次尝试是使用QWebElement
. 但是,我遇到了一些由内存泄漏引起的严重问题QWebPage
(这很可能是由于我没有正确使用它造成的。但这是另一个主题,而不是这个问题的一部分)。
到目前为止,我没有使用任何 GUI,尽管我打算稍后再这样做,但我的程序的这一部分永远不会成为 GUI 的一部分,而是在后台的某个地方。
因此,我想替换QWebPage
by的用法QTextBrowser
,这似乎更轻量级。但是,我在 Qt-API 中找不到类似于QWebElement
. 到目前为止,我的代码依赖于QWebElement::findFirst()
,QWebElement::nextSibling()
最后QWebElement::takeFromDocument()
。
QTextBrowser
那么,作为 HTML 解析器实现(或使用)是否有几乎无痛的可能性?甚至可能是“最佳实践”?
我不需要评估任何 JavaScript,尽管它很可能内联在 HTML 页面中。我也不需要使用 CSS 进行样式设置,尽管它在相关的 HTML 页面中被大量使用。我只需要根据它们的 id 或 CSS 类检索某些 HTML 块(作为表格行)。
PS:我只愿意使用现有的 C++ HTML 解析库,以防所有使用纯 Qt 的可行和合理尝试都失败。
PPS:只是为了看到和了解它们,我也想得到现在非凡的解决方案。;-)
这是我当前代码的一部分,我在其中使用QWebElement
. reportPage
是一个QWebPage
对象。
c++ - QWebFrame::setHtml 后崩溃
我正在尝试将 html 内容动态设置为主线程中的文档节点。
这些行正常执行,但之后我得到调用堆栈的读取访问冲突
任何问题的谷歌搜索或堆栈溢出都没有成功。其他人有同样的问题吗?QWebFrame::setHtml 的正确用法是什么?
谢谢
[已解决] 不是从主线程调用 QWebFrame::setHtml 时会发生此问题。
python - 如何使 QWebView/QWebPage 默认为衬线字体?
使用 PyQt4,我创建了一个 QWebView,然后使用它的 setHtml() 方法加载它。HTML 在大多数方面都能正确显示,但始终使用默认的无衬线字体。
当外部浏览器(例如 Firefox)加载相同的 HTML 纯文本时,它会以默认的衬线字体显示。我希望 webview 也这样做。
我已经阅读了 QWebView、QWebPage 和 QWebSettings 的文档,但没有看到任何设置默认“标准”或“比例”字体的方法,可与浏览器的首选项设置相媲美。我查看了 QStyleSheets,但它们似乎不适用于 QWebView/WebPage。