为啥 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,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?