Qt4: Как вызвать функции JavaScript на странице из C ++ через QtWebkit? - PullRequest
6 голосов
/ 11 сентября 2009

Я пытаюсь написать простую программу просмотра журналов, используя порт / реализацию WebKit Qt4. Мой HTML-код выглядит так:

http://pastie.org/613296

Более конкретно, я пытаюсь выяснить, как вызвать функцию add_message (), которая определена в разделе <script> в документе HTML из моего кода C ++.


// Doesn't work:
QWebElement targetElement = chatView->page()->mainFrame()->findFirstElement("head").firstChild("script");

// Function is not included, either...
qDebug() << targetElement.tagName() << targetElement.functions();

// The ultimate attempt in calling the function anyway:
QVariant functionResult = targetElement.callFunction("add_message");

1 Ответ

13 голосов
/ 03 декабря 2009

Если вы используете Qt 4.5, сделайте что-то вроде этого:

htmlView->page()->mainFrame()->evaluateJavaScript("add_message(); null");

Примечание: null в конце скрипта из-за проблем с производительностью. QWebFrame::evaluateJavaScript возвращает QVariant с последним значением в скрипте. Оценка последнего значения в скрипте может быть очень трудоемкой, поэтому, если поставить null в конце, он сразу же вернется.

...