zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    Spring AOP
    编写jQuery插件
    Linux下SVN服务器搭建
    Redis安装配置与Jedis访问数据库
    使用redis做mysql缓存
    $(document).ready(function(){})和$(window).load(function(){})的区别
    SSH三大框架简介
    docker inspect命令
    ELK 环境搭建3-Logstash
    ELK 环境搭建2-Kibana
  • 原文地址:https://www.cnblogs.com/findumars/p/6375620.html
Copyright © 2011-2022 走看看