我在我的代码中的一个地方调用了QWebFrame::evaluateJavaScript
,它没有任何效果。但是,如果我用setTimer(0)调用替换此调用,并且当此计时器超时时它将调用原始函数,它将起作用。我怎么知道它是否有效?在我的案例中评估的JavaScript代码调用一个JavaScript函数,该函数又调用AJAX。这个AJAX调用反过来使QNetworkAccessManager
使用QWebFrame
创建并发送QNetworkRequest
。但是,当我直接从我的代码中调用QWebFrame::evalutateJavaScript
时,没有创建请求。当我说它在第一种情况下不起作用时,这就是我的意思。
在QNetworkAccessManager
被调用之后,看起来有些事情阻止了QtWebKit和//或evaluateJavaScript
执行他们的工作。我怀疑它与事件和主(gui)事件循环有关。有什么想法吗?
答案 0 :(得分:1)
鉴于您对使用setTimer()的评论,在正确的位置调用qApp-> processEvents()可能会解决问题。
你能提供一些代码吗?我不确定你的意思是什么:
这个AJAX调用反过来 使用的QNetworkAccessManager QWebFrame创建并发送一个 QNetworkRequest。
答案 1 :(得分:0)
你在发出信号loadFinished之前调用了evaluateJavaScript吗?