webbrowser 执行网页中的JS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webbrowser 执行网页中的JS相关的知识,希望对你有一定的参考价值。
网页是jsp的,其中一个图片按钮对应的是JS代码:
<td class="labelrow1"><img src="images/gm_button_2.jpg" style="cursor:hand;" border="0" onclick="ajaxReset();" width="90" height="25"></td>
function ajaxReset()
var xmlhttp;
try
xmlhttp=new XMLHttpRequest();
catch (e)
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
if (4==xmlhttp.readyState)
if (200==xmlhttp.status)
var text=xmlhttp.responseText;
var ddarr=new Array();
ddarr=text.split("|");
var message=ddarr[0];
var dan=ddarr[1];
var shuang=ddarr[2];
var da=ddarr[3];
var xiao=ddarr[4];
var lon=ddarr[5];
var he=ddarr[6];
var hu=ddarr[7];
var fen=ddarr[8];
var status=ddarr[9];
var score=ddarr[10];
if (text.indexOf("游戏连接成功")>=0)
document.getElementById("message").value=message;
document.getElementById("scores").value=score;
setcoin('Layer1','h1',dan);
setcoin('Layer2','h2',da);
setcoin('Layer3','h3',lon);
setcoin('Layer4','h4',he);
setcoin('Layer5','h5',hu);
setcoin('Layer6','h6',xiao);
setcoin('Layer7','h7',shuang);
setcoin1('Layer8','h8',fen);
setstatus(status);
else
document.getElementById("message").value=text;
else
document.getElementById("message").value="与服务器通讯中断!"
xmlhttp.open("post","coinreset.jsp",true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send("");
我先用VB6.0的webbrowser打开这个网页,要VB自动点击这个图片按钮,要怎么做,本人刚学VB不久,还是个菜鸟,最好能给段代码,能附带说明更好。
在界面上拖入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> 参考技术A webbrowser1.Document.parentWindow.execScript "ajaxReset()", "JavaScript"
让webbrowser1运行JS中的ajaxReset()函数本回答被提问者采纳
c#抓取动态网页中的数据
我想抓这个网址的表格中的数据,可是他是通过js来显示数据的,直接获取源码,看不到表格中的信息,应该怎么办?能不能找出它们数据的xml文件什么的? 求大师支招啊 谢谢!这是网址:data.shishicai.cn/cqssc/haoma/
能告诉我你回答的那些数据是怎么获得的了?
用正常手动的方式去打开网页 看它发了几个包 带了什么参数 对应地址是哪
然后用程序去模拟即可
以上是关于webbrowser 执行网页中的JS的主要内容,如果未能解决你的问题,请参考以下文章