为什么 QWebFrame::evaluateJavaScript 在这种情况下什么也不做?
我在代码中的一处调用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
鉴于您对使用 setTimer() 的评论,在正确的位置调用 qApp->processEvents() 可能会解决问题。
你能提供一些代码吗?我不确定你的意思是:
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:
您是否在发出信号loadFinished之前调用了evaluateJavaScript?
Do you called evaluateJavaScript before the signal loadFinished was emitted?