我正在尝试使用Qt4的WebKit端口/实现编写一个简单的日志查看器。我的HTML代码如下所示:

http://pastie.org/613296

更具体地说,我试图找出如何从C++代码调用HTML文档的<script>部分中定义的add_message()函数。

// 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");

最佳答案

如果您使用的是Qt 4.5,请执行以下操作:

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

注意:脚本末尾的null是出于性能问题。 QWebFrame::evaluateJavaScript返回带有脚本中最后一个值的QVariant。评估脚本中的最后一个值可能确实很耗时,因此将null放在末尾会使它立即返回。

10-04 23:21