Qt4: How to call JavaScript functions in a page fr

2019-04-07 23:04发布

I'm trying to write a simple log viewer using Qt4's WebKit port/implementation. My HTML code looks like this:

http://pastie.org/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");

1条回答
够拽才男人
2楼-- · 2019-04-07 23:31

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.

查看更多
登录 后发表回答