在Qt代码里调用js中的函数

html文件里加入了如下js代码
<script language="JavaScript" type="text/javascript">
        function tryalert()
        {
                alert("i'm js alert!");
        }
</script>

Qt代码里先尝试在javaScriptWindowObjectCleared信号对应的槽里调用, 结果失败了:
    connect(ui.webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
            this, SLOT(populateJavaScriptWindowObject()));
...
void FormExtractor::populateJavaScriptWindowObject()
{
    ui.webView->page()->mainFrame()->evaluateJavaScript("tryalert();");
}

找专家问了问, 是因为这个信号发出得太早了, 页面还没有完全载入。 需要在后面调用。 最好是响应loadFinished(bool)信号:
connect(ui.webView->page()->mainFrame(), SIGNAL(loadFinished(bool)),
            this, SLOT(callFunction()));
...
void FormExtractor::callFunction()
{
    ui.webView->page()->mainFrame()->evaluateJavaScript("tryalert();");
}

你可能感兴趣的:(JavaScript,qt)