zoukankan      html  css  js  c++  java
  • Winform WebBrowser控件对访问页面执行、改写、添加Javascript代码

    大家有兴趣可以加我QQ群交流:14792063 广州软件开发团队

    使用Winform WebBrowser控件对访问页面执行、改写、添加Javascript代码,可以解决许多问题,实现你想要的效果。

    可以通过引用Microsoft.mshtml,实现对Javascript的操作,代码如下:

    代码
    mshtml.IHTMLDocument2 doc = webBrowser1.Document.DomDocument as mshtml.IHTMLDocument2;
    mshtml.IHTMLWindow2 win 
    = doc.parentWindow as mshtml.IHTMLWindow2;
    win.execScript(
    @"alert('hello webbrowser')""javascript");
    其实还有一种更好的、无需引用Microsoft.mshtml的实现方式:
    代码
    HtmlElement ele = webBrowser1.Document.CreateElement("script");
    ele.SetAttribute(
    "type""text/javascript");
    ele.SetAttribute(
    "text""alert('hello webbrowser')");
    webBrowser1.Document.Body.AppendChild(ele);

    这种使用.Net框架本身所提供的对象,相比引用框架外的COM,好处是显而易见的,这将更方便于安装部署至客户机上。

    执行上述两段代码的效果是一样的,都将弹出网页对话框“hello webbrowser”。如果仅是执行Javascript方法,那么,有更简单的且可获得方法返回值的方式,首先假如页面上有如下Javascript方法:

    function sayHello(to) {
        alert(
    'hello ' + to);
        
    return 'hi, i am javascript';
    }

    在Winform中执行以下代码,首先会弹出网页对话框“hello webbrowser”,然后是Winform的MessageBox对话框“hi, i am javascript”

    MessageBox.Show(webBrowser1.Document.InvokeScript("sayHello",new object[]{"webbrowser"}).ToString());
     

    Winform WebBrowser控件是一个好东西,它不但可以导航网页,还可以使用它获取一些在客户端浏览器HTML源代码中无法获取的数据。如使用了AJAX获取数据的页面,通过客户端浏览器查看源代码的方式,将无法获取到这部分的数据;又如使用了Javascript对内容进行加密以防止采集的页面,即使让你获得HTML源代码,也难以解密得到你想要的结果。但WebBrowser使得这一切变得简单!有兴趣的朋友欢迎继续阅读本博的另一篇文章《网站防采集防不慎防,采集技巧分享》,讲述如何通过WebBrowser访问加密页面,改写其中的Javascirpt方法获取加密的结果。

  • 相关阅读:
    数组(array)
    亲戚(relative)
    [ZJOI2016]小星星
    P4782 【模板】2-SAT 问题
    CF1065F Up and Down the Tree
    CF1065C Make It Equal
    CF1060F Shrinking Tree
    CF1060E Sergey and Subway(点分治)
    CF1060D Social Circles
    CF1060C Maximum Subrectangle
  • 原文地址:https://www.cnblogs.com/welcomesay/p/1803815.html
Copyright © 2011-2022 走看看