Qt使用WebBrowser并调用网页中的JS函数怎么实现

 我来答
好程序员
2016-09-06 · HTML5前端培训/大数据培训/Java
好程序员
好程序员是IT高端课程培训基地,从平凡到卓越,为梦想而拼搏。
向TA提问
展开全部
在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃
建议在代码中动态设置,如:

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

这里的办法是通过IHTMLWindow2接口的execScript方法执行JavaScript函数。可惜的是这个方法不支持函数返回值
[cpp] view plain copy
#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函数如下
[html] view plain copy
<script language="javascript" type="text/javascript">
function Test()
{
alert("你调用了全局函数Test");
}
</script>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式