为啥 QWebFrame::evalutateJavaScript 在这种情况下啥都不做?
Posted
技术标签:
【中文标题】为啥 QWebFrame::evalutateJavaScript 在这种情况下啥都不做?【英文标题】:Why does QWebFrame::evalutateJavaScript do nothing in this case?为什么 QWebFrame::evalutateJavaScript 在这种情况下什么都不做? 【发布时间】:2009-09-29 15:42:17 【问题描述】:我在代码中的一处调用QWebFrame::evaluatejavascript
,但它没有任何效果。但是,如果我用 setTimer(0) 调用替换此调用,并在此计时器超时时调用原始函数,则它可以工作。我怎么知道它是否有效?在我的案例中评估的 JavaScript 代码调用一个 JavaScript 函数,该函数又进行 AJAX 调用。这个 AJAX 调用反过来使QWebFrame
使用的QNetworkAccessManager
创建并发送QNetworkRequest
。但是,当我直接从我的代码中调用 QWebFrame::evalutateJavaScript
时,没有创建任何请求。当我说它在第一种情况下不起作用时,这就是我的意思。
在调用 evaluateJavaScript
后,似乎有什么东西阻止了 QtWebKit 和//或 QNetworkAccessManager
执行他们的工作。我怀疑它与事件和主(gui)事件循环有关。有什么想法吗?
【问题讨论】:
【参考方案1】:鉴于您的 cmets 关于使用 setTimer(),在正确的位置调用 qApp->processEvents() 可能会解决问题。
你能提供一些代码吗?我不确定你的意思是什么:
这个 AJAX 调用反过来使 QNetworkAccessManager 使用 QWebFrame 创建并发送一个 QNetworkRequest。
【讨论】:
【参考方案2】:在信号 loadFinished 发出之前,您是否调用了 evaluateJavaScript?
【讨论】:
以上是关于为啥 QWebFrame::evalutateJavaScript 在这种情况下啥都不做?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?