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并指定控件为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>
参考技术A webbrowser1.Document.parentWindow.execScript "ajaxReset()", "JavaScript"
让webbrowser1运行JS中的ajaxReset()函数本回答被提问者采纳

c#抓取动态网页中的数据

我想抓这个网址的表格中的数据,可是他是通过js来显示数据的,直接获取源码,看不到表格中的信息,应该怎么办?能不能找出它们数据的xml文件什么的? 求大师支招啊 谢谢!这是网址:data.shishicai.cn/cqssc/haoma/
能告诉我你回答的那些数据是怎么获得的了?

用一个webbrowser加载js的链接地址,加载完成后可以通过webbrowser的documentText获取所有信息。 参考技术A 找一个可以截获解析html包的浏览器/浏览器插件/软件
用正常手动的方式去打开网页 看它发了几个包 带了什么参数 对应地址是哪
然后用程序去模拟即可

以上是关于webbrowser 执行网页中的JS的主要内容,如果未能解决你的问题,请参考以下文章

怎样让webbrowser执行JS脚本正常显示网页

VB模拟鼠标点击webbrowser控件网页

WinFrom下WebBrowser控件的一些小技巧

如何使用webbrowser控件获取网页源代码

DELPHI如何实现打开某一个网页没webbrowser组件

delphi 怎么判断webbrowser打开网页成功?