Reputation:
I'm trying to write a simple log viewer using Qt4's WebKit port/implementation. My HTML code looks like this:
More specifically, I'm trying to find out how to call the add_message() function which is defined in the <script>
section in the HTML document from my C++ code.
// 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");
Upvotes: 6
Views: 7831
Reputation: 13130
If you are using Qt 4.5 do it something like this:
htmlView->page()->mainFrame()->evaluateJavaScript("add_message(); null");
Note: null
at the end of script is for performance issue. QWebFrame::evaluateJavaScript
returns QVariant
with last value in the script. Evaluating last value in the script may be really time consuming, so putting null
at the end makes it return immediately.
Upvotes: 14