为什么 QWebFrame::evaluateJavaScript 在这种情况下什么也不做?

发布于 2024-08-06 07:39:24 字数 498 浏览 12 评论 0原文

我在代码中的一处调用 QWebFrame::evaluateJavaScript 但它没有任何效果。但是,如果我用 setTimer(0) 调用替换此调用,并将在该计时器超时时调用原始函数。我怎么知道它是否有效?在我的例子中,评估的 JavaScript 代码调用一个 JavaScript 函数,该函数又进行 AJAX 调用。此 AJAX 调用反过来使 QWebFrame 使用的 QNetworkAccessManager 创建并发送 QNetworkRequest。但是,当我直接从代码调用 QWebFrame::evalutateJavaScript 时,不会创建任何请求。这就是我说它在第一种情况下不起作用的意思。

调用 evaluateJavaScript 后,似乎有什么东西阻止了 QtWebKit 和//或 QNetworkAccessManager 执行其工作。我怀疑它与事件和主(gui)事件循环有关。有什么想法吗?

I'm calling QWebFrame::evaluateJavaScript in one place in my code and it has no effect. However, if I replace this call with the setTimer(0) call and will call the original function when this timer times out it works. How do I know if it works or not? The JavaScript code which is evaluated in my case calls one JavaScript function which in turn makes AJAX call. This AJAX call in turn makes QNetworkAccessManager used by QWebFrame create and send a QNetworkRequest. There is no request being created when I call QWebFrame::evalutateJavaScript directly from my code, however. That's what I mean when I say it does not work in the first scenario.

It looks like something is preventing QtWebKit and//or QNetworkAccessManager from carrying out their job after evaluateJavaScript is called. I suspect it has something to do with events and the main (gui) event loop. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

长梦不多时 2024-08-13 07:39:24

鉴于您对使用 setTimer() 的评论,在正确的位置调用 qApp->processEvents() 可能会解决问题。

你能提供一些代码吗?我不确定你的意思是:

这个 AJAX 调用反过来使
使用 QNetworkAccessManager
QWebFrame 创建并发送
QNetworkRequest。

Given your comments about using setTimer(), calling qApp->processEvents() at the right point might solve the problem.

Could you provide some code? I'm not sure what you mean by this:

This AJAX call in turn makes
QNetworkAccessManager used by
QWebFrame create and send a
QNetworkRequest.

陌路终见情 2024-08-13 07:39:24

您是否在发出信号loadFinished之前调用了evaluateJavaScript?

Do you called evaluateJavaScript before the signal loadFinished was emitted?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文