为什么QWebFrame :: evalutateJavaScript在这种情况下什么都不做?

时间:2009-09-29 15:42:17

标签: c++ qt events qtwebkit qnetworkaccessmanager

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

QNetworkAccessManager被调用之后,看起来有些事情阻止了QtWebKit和//或evaluateJavaScript执行他们的工作。我怀疑它与事件和主(gui)事件循环有关。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

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

  

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

答案 1 :(得分:0)

你在发出信号loadFinished之前调用了evaluateJavaScript吗?