
虽然VBWebBrowser控件不支持JavaScript,但我们可以通过一些技巧来实现JavaScript的功能。例如,我们可以通过在VBWebBrowser控件中加载一个包含JavaScript代码的HTML页面,然后使用VB代码来调用JavaScript函数。在这种情况下,我们需要使用VBWebBrowser控件的Document对象来访问HTML页面中的JavaScript代码。
另外,我们也可以使用其他的Web浏览器控件,如CefSharp和Awesomium等,它们基于Chromium浏览器内核开发,对JavaScript的支持更加完善。这些控件可以轻松地在VB应用程序中嵌入Web浏览器功能,并且支持JavaScript、CSS、HTML5等最新Web技术。
总之,虽然VBWebBrowser控件不支持JavaScript,但我们可以通过其他方法来实现JavaScript的功能。在选择Web浏览器控件时,我们需要考虑到应用程序的需求和技术要求,选择最适合的控件来实现Web浏览器功能。
object[] objects = new object[2]//写入脚本方法,暂时保留objects[0] = 1615
objects[1] = EnumDefenceAreaStatus.DefenceAreaStatus1
web.InvokeScript("changeStatus", objects)
在界面上拖入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 *doc2document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2)if (doc2) { IHTMLWindow2 *win2 = nullptrif (doc2->get_parentWindow(&win2) == S_OK) { BSTR s1 = SysAllocString(L"Test()")BSTR s2 = SysAllocString(L"JavaScript")VARIANT retwin2->execScript(s1, s2, &ret)SysFreeString(s2)SysFreeString(s1)} } }
JavaScript函数如下
<script language="javascript" type="text/javascript">function Test() { alert("你调用了全局函数Test")} </script>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)