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

在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃

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

[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. ui->axWidget->setControl("Shell.Explorer");  
  2. ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");  

当然,上面的"C:/1.html"是我测试的页面

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

[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. #include <MsHTML.h>  
  2.   
  3. {  
  4.     QAxObject *document = ui->axWidget->querySubObject("Document");  
  5.     IHTMLDocument2 *doc2;  
  6.     document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2);  
  7.     if (doc2)  
  8.     {  
  9.         IHTMLWindow2 *win2 = nullptr;  
  10.         if (doc2->get_parentWindow(&win2) == S_OK)  
  11.         {  
  12.             BSTR s1 = SysAllocString(L"Test()");  
  13.             BSTR s2 = SysAllocString(L"JavaScript");  
  14.             VARIANT ret;  
  15.             win2->execScript(s1, s2, &ret);  
  16.             SysFreeString(s2);  
  17.             SysFreeString(s1);  
  18.         }  
  19.     }  
  20. }  

JavaScript函数如下

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
    1. <script language="javascript" type="text/javascript">  
    2. function Test()  
    3. {  
    4.     alert("你调用了全局函数Test");  
    5. }  
    6. </script>  

http://blog.csdn.net/aqtata/article/details/9471959

原文地址:https://www.cnblogs.com/findumars/p/6375620.html