Почему в этом случае QWebFrame::evaluateJavaScript ничего не делает?

Я вызываю QWebFrame::evaluateJavaScript в одном месте своего кода, и это не дает никакого эффекта. Однако, если я заменю этот вызов вызовом setTimer(0) и вызову исходную функцию, когда этот таймер истечет, она сработает. Как я узнаю, работает он или нет? Код JavaScript, который оценивается в моем случае, вызывает одну функцию JavaScript, которая, в свою очередь, вызывает вызов AJAX. Этот вызов AJAX, в свою очередь, заставляет QNetworkAccessManager использоваться QWebFrame для создания и отправки QNetworkRequest. Однако, когда я вызываю QWebFrame::evalutateJavaScript непосредственно из своего кода, запрос не создается. Вот что я имею в виду, когда говорю, что это не работает в первом сценарии.

Похоже, что-то мешает QtWebKit и//или QNetworkAccessManager выполнять свою работу после вызова evaluateJavaScript. Я подозреваю, что это как-то связано с событиями и основным циклом событий (gui). Любые идеи?


person Piotr Dobrogost    schedule 29.09.2009    source источник


Ответы (2)


Учитывая ваши комментарии об использовании setTimer(), вызов qApp->processEvents() в нужный момент может решить проблему.

Не могли бы вы предоставить код? Я не уверен, что вы имеете в виду под этим:

Этот вызов AJAX, в свою очередь, заставляет QNetworkAccessManager, используемый QWebFrame, создавать и отправлять QNetworkRequest.

person Sam Dutton    schedule 29.09.2009

Вызывали ли вы AssessmentJavaScript до того, как был отправлен сигнал loadFinished?

person Rodrigo    schedule 18.08.2011