LabVIEW论坛
直播中

晏凯

12年用户 143经验值
擅长:测试与测量
私信 关注
[讨论]

labview 如何调用HTML中的一段JS代码

labview 如何调用HTML中的一段JS代码,红色字体怎么转成labview代码?

        CComQIPtr spDoc = m_web.get_Document();
        CComDispatchDriver spScript;
        spDoc->get_Script(&spScript);
        CComVariant var1 = lon,var2 = lat,varRet;
        spScript.Invoke2(L"show_aircraft",&var1,&var2,&varRet);

回帖(6)

晏凯

2017-4-1 16:22:51
自己沙发,大神门帮忙解决一下
举报

影月5

2019-5-30 01:32:59
在labview官方论坛中,我找到一个issue有关于在labview中使用容器ActiveX或者com+以浏览器方式打开网页,并且调用网页中的JavaScript函数,或者获取网页中的数据。在中文社区中基本没见到关于JavaScript调用的详细的帖子,我给自己做个备忘,也方便他人吧。labview中先要了解事件处理架构,代码如下:(引用于:exampleConnectivityActiveXActiveX Event Callback.vi)

ActiveX Event Callback1.png

注意:vi reference is a strict VI reference to the callback VI. vi reference must match exactly the data from the registered event and the callback VI must be reentrant.上面这段话:首先是严格的类型引用(可以不严格,只是会非常麻烦,很多时候逻辑上没得问题,就是报错,应该是框架要求的这个属性.)labview中注册ActiveX控件的回调事件处理Vi或函数其次必须满足事件响应数据(我理解是事件通用数据变体varints to data事件返回变体用户参数等,变体可以理解为void类型的指针,显式转换为什么数据类型读取为什么样的数据.),最后必须是重载的SubVi.这里的三操作步骤如下图:
图一是vi的严格类型引用设置:
ActiveX Event Callback1.1.png
图一
图二是创建SubVi满足事件回调Vi的形参和返回值接口(Vi完全可以理解为一个函数嘛)
ActiveX Event Callback1.2.png 这里注意创建了之后可以打开,相对应的前面板和程序面板,此时没有保存可手动保存一下,并且它的属性是设置的reentrants.
图三是设置Vi的属性为可重载(官方帮助说明:labview的vi重载说明-英文有中文的但是我没保存链接,时间充裕可以找哈)
ActiveX Event Callback1.3.1.png ActiveX Event Callback1.3.2.png
到这里基本知识解决了.其次就是怎么调用JavaScript function了.可以参考下面那个链接,我就是这么学习过来的.一个错误关于labview调用JavaScript function出错
第一步找ActiveX容器的细节问题如下:
ActiveX Event Callback2.png ActiveX Event Callback2.2.1.png ActiveX Event Callback2.2.2.png ActiveX Event Callback2.2.3.png
第二步后面板的事件注册细节(注册事件最好要先于navigate2方法,我就因为先navigate2了然后经过定时循环结构中的refresh方法后再去注册回调SubVi,然后重来不回调我的SubVi,程序编译调试啥都没问题,就是运行结果不对.最后还是从本文第一幅图发现这里有蹊跷!!!)
ActiveX Event Callback2.1.png
第三步SubVi的细节
ActiveX Event Callback2.3.1.png ActiveX Event Callback2.3.2.png ActiveX Event Callback2.3.3.png ActiveX Event Callback2.3.4.png
最后这个图里关键的地方在第一个顺序框中.为此我放大的图片上来.并给出一个字符串"javascript:alter(10)"调用alter函数输出数值10.这个就给我们在浏览器的URL栏输入相对应的JavaScript调用命令一个道理.哎亏我还是半个前端,这都没想到.白忙活两个星期才解决这么简单的一个问题.
这里也打开一扇门,可以去用其他对象.不一定是webbrowser对象了.前面图片中把对象说成类了,我就不回头改了,都深夜1:32了.睡了.
举报

赵云龙

2019-8-5 20:35:59
学习了,留贴收藏,,,,,,,,,谢谢
举报

聂琪

2019-8-14 15:03:59
非常感谢,收藏备用
举报

更多回帖

发帖
×
20
完善资料,
赚取积分