2009-09-29 151 views
0

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

看起来有些东西阻止QtWebKit和/或QNetworkAccessManager在调用evaluateJavaScript之后执行其作业。我怀疑它与事件和主(gui)事件循环有关。有任何想法吗?

回答

1

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

你能提供一些代码吗?我不知道你这是什么意思:

这AJAX调用又使被 QWebFrame使用 QNetworkAccessManager创建和发送 QNetworkRequest。

相关问题