0

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

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

4

2 回答 2

1

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

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

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

于 2009-09-29T20:34:17.080 回答
0

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

于 2011-08-18T03:46:43.843 回答