您的位置:首页 > 编程语言 > Qt开发

【Qt】使用WebBrowser并调用网页中的JS函数

2013-07-25 18:04 357 查看
在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃

建议在代码中动态设置,如:

ui->axWidget->setControl("Shell.Explorer");
ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");
当然,上面的"C:/1.html"是我测试的页面

这里的办法是通过IHTMLWindow2接口的execScript方法执行JavaScript函数。可惜的是这个方法不支持函数返回值

#include <MsHTML.h>

{
    QAxObject *document = ui->axWidget->querySubObject("Document");
    IHTMLDocument2 *doc2;
    document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2);
    if (doc2)
    {
        IHTMLWindow2 *win2 = nullptr;
        if (doc2->get_parentWindow(&win2) == S_OK)
        {
            BSTR s1 = SysAllocString(L"Test()");
            BSTR s2 = SysAllocString(L"JavaScript");
            VARIANT ret;
            win2->execScript(s1, s2, &ret);
            SysFreeString(s2);
            SysFreeString(s1);
        }
    }
}

JavaScript函数如下

<script language="javascript" type="text/javascript">
function Test()
{
    alert("你调用了全局函数Test");
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐