vbwebbrowser控件不支持js

vbwebbrowser控件不支持js,第1张

您好,VBWebBrowser控件是Visual Basic语言中的一个常见控件,它可以在应用程序中嵌入Web浏览器功能。然而,VBWebBrowser控件并不支持JavaScript,这是因为VBWebBrowser控件是基于Internet Explorer浏览器内核开发的,而IE浏览器对JavaScript的支持并不完整。

虽然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>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11240797.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存