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");
I'm trying to write a simple log viewer using Qt4's WebKit port/implementation. My HTML code looks like this:
http://pastie/613296
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");
Share
Improve this question
edited Aug 9, 2012 at 3:49
Blender
298k55 gold badges458 silver badges510 bronze badges
asked Sep 11, 2009 at 7:42
BastiBenseBastiBense
1 Answer
Reset to default 14If 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.