导航:首页 > 编程语言 > cwebbrowser执行js

cwebbrowser执行js

发布时间:2025-09-23 08:28:52

① vb6使用Webbrowser1,点击网页里面的按钮,触发网页的js时,触发vb中定义的事件

看了抄你的提问我也有袭了疑问:

  1. 1.htm有几个?

  2. Set mICustomDoc = Me.WebBrowser1.Document
    mICustomDoc.SetUIHandler Me

这个代码里面,SetUIHandler方法来自何方?可能是你自己写了个加强型类模块?


看到“(这个页面结构我是无权限改动的,我只有权限改动vb中的代码)”这句我就望而却步了,我的办法是废弃掉HTM文件里的所有执行代码,HTM文件只负责布局,执行代码都集中到VB程序里。


还有个办法是找到mICustomDoc.SetUIHandler Me的逆操作,文本框(如果能)取得焦点,就采取该逆操作,使得文本框能够输入。文本框取得焦点的时候最好添加个遮布来屏蔽页面其他元素,如果这样,文本框也就不如没有好。

② webbrowser 执行网页中的JS

在界面上拖入QAxWidget并指定控件为{8856F961-340A-11D0-A96B-00C04FD705A2},这个值可以通过OleView.exe查到然后通过IHTMLWindow2接口的execScript方法执行java

在界面上拖入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>

③ C# 的cefsharp 里的ChromiumWebBrowser执行js

你可以把这个js 写在网页加载的事件上,或者在生成窗口的时候带入一个js文件,他也会去执行,用这个来封装应用程序会导致安装包很大慎用。

阅读全文

与cwebbrowser执行js相关的资料

热点内容
分布式文件夹 浏览:180
同一文件夹内多个excel文件汇总 浏览:271
软件不升级就不能用了 浏览:666
fdc文件放在cad什么位置 浏览:350
修改java中的jar包 浏览:688
nodejs获取当前url 浏览:603
新建电脑桌面文件刷新成2个 浏览:527
道道通文件名 浏览:265
php连接mysql配置文件 浏览:48
如何删除表格中使用文件 浏览:729
cwebbrowser执行js 浏览:456
手机qq发文件超过上限 浏览:776
javaurl截取文件名 浏览:589
net中的元数据是什么意思 浏览:615
什么读书的app推荐 浏览:493
怎么用手机编程猫做游戏 浏览:386
使用的数据类型有哪些 浏览:351
源文件画册 浏览:970
java扫描文件内容 浏览:131
ie开发人员工具调试 浏览:477

友情链接