精华内容
下载资源
问答
  • C# webbrowser控件执行js脚本源码

    热门讨论 2009-10-13 18:23:02
    找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵
  • 在C# WebBrowser控件插入JS代码,并执行! HtmlElement script = webBrowser.Document.CreateElement("script"); script.SetAttribute("type", "text/javascript"); script.SetAttribute("text", "function ...

    在C# WebBrowser控件插入JS代码,并执行!

        HtmlElement script = webBrowser.Document.CreateElement("script");
        script.SetAttribute("type", "text/javascript");
        script.SetAttribute("text", "function _func(){alert('OK')}");
        HtmlElement head = webBrowser.Document.Body.AppendChild(script);
        webBrowser.Document.InvokeScript("_func");

    WPF的WebBrowser和WinForm的WebBrowser有一定区别。

     

    要向其中注入javascript脚本,经过本人试验,下面一条路可以走通:

     

    mshtml.HTMLDocument htmlDoc = Browser.Document as mshtml.HTMLDocument;
    var head = htmlDoc.getElementsByTagName("head").Cast<HTMLHeadElement>().First();
    var script = (IHTMLScriptElement)htmlDoc.createElement("script");
    script.text ="alert('hello world')";
    head.appendChild((IHTMLDOMNode)script);

     

    该方法还可以注入javascript函数,在需要的时候调用 Browser.InvokeScript()即可。

     

    但是今天发现一个很奇怪问题。。我用该注入方法修改 document.body.style.zoom,整个页面会缩放,但是其中的flash等控件居然有问题。。

     

    然后我用IE8带的开发人员工具注入修改 document.body.style.zoom 则没这个问题。。。

    转载于:https://www.cnblogs.com/daming1233/p/6423315.html

    展开全文
  • duilib WebBrowser控件执行javascript(js

    千次阅读 2017-03-06 10:12:12
    执行js务必在网页加载完成时执行,示例代码片段如下: void CWebWnd::NavigateComplete2(CWebBrowserUI* pWeb, IDispatch *pDisp,VARIANT *&url) { CDuiString strUrl(url->bstrVal); // execute js start ...

    执行js务必在网页加载完成时执行,示例代码片段如下:

    void CMyWebBrowserEvenrHandler::NavigateComplete2(CWebBrowserUI* pWeb, IDispatch* pDisp, VARIANT*& url)
    {
    	// 页面加载完毕才能执行js
    	// execute js start 
    	IDispatch *pHtmlDocDisp = pWeb->GetHtmlWindow();
    	IHTMLDocument2 *pHtmlDoc2 = NULL;
    	HRESULT hr = pHtmlDocDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHtmlDoc2);
    	pHtmlDocDisp->Release();
    	if (SUCCEEDED(hr) && pHtmlDoc2 != NULL)
    	{
    		CComQIPtr<IHTMLWindow2> pHTMLWnd;
    		pHtmlDoc2->get_parentWindow(&pHTMLWnd);
    		if (SUCCEEDED(hr) && pHTMLWnd != NULL)
    		{
    			//CComBSTR bstrjs = SysAllocString(_T("document.documentElement.style.overflow = 'hidden'"));//去除水平方向滚动条  
    			CComBSTR bstrjs = SysAllocString(_T("document.documentElement.style.overflowY = 'hidden'"));//去除竖直方向滚动条  
    			CComBSTR bstrlan = SysAllocString(_T("javascript"));
    			VARIANT varRet;
    			pHTMLWnd->execScript(bstrjs, bstrlan, &varRet);
    		}
    	}
    	// execute js end
    }


    展开全文
  • 使用Winform WebBrowser控件对访问页面执行、改写、添加Javascript代码,可以解决许多问题,实现你想要的效果。 可以通过引用Microsoft.mshtml,实现对Javascript的操作,代码如下: 代码 mshtml....

                    //方法1
                    HtmlElement element2 = webQzone.Document.CreateElement("script");
                    element2.SetAttribute("type", "text/javascript");
                    element2.SetAttribute("text", "function _func(){alert('OK')}");   //这里写JS代码
                    HtmlElement head = webQzone.Document.Body.AppendChild(element2);
                    webQzone.Document.InvokeScript("_func");
    
                    //方法2
                    var doc = this.webQzone.Document.DomDocument as IHTMLDocument2;
                    var win = doc.parentWindow as IHTMLWindow2;
                    string jscode = @"alert('OK2')";  //这里写JS代码
                    win.execScript(jscode, "javascript");

    参考:

    C#通过webbrowser控件与javascript交互

    1.C#里调用控件里面网页的js函数

    // 调用JavaScript的messageBox方法,并传入参数
    object[] objects = new object[1];
    objects[0] = “C#访问JavaScript脚本”;

    this.webBrowser1.Document.InvokeScript(“messageBox”, objects);

    //object就是传入的参数,而messageBox则是网页中预定义好的js函数。

    通过这种方式C#里面就可以执行Javascript函数,可以把上面的代码放到一个button的click事件里面。


    2.C#windows窗体应用webbrowser控件里网页js调用C#窗体的函数

    首先需要在代码里面加上

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class Form1 : Form

    {

    …..//

    }

    这样使得C#的com对象是对网页里的javascript可见的。

    然后在嵌入网页里面通过“window.external.MyMessageBox(‘javascript访问C#代码’)” ,即通过window.external捕获调用c#定义好的函数。

    具体Form.cs代码如下(通过vs2008创建的c#window窗体应用,拖拽上一个webbrowser控件和button控件。):

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    System.IO.FileInfo file = new System.IO.FileInfo(“test.html”);
    // WebBrowser控件显示的网页路径
    this.webBrowser1.Url = new Uri(file.FullName);
    // 将当前类设置为可由脚本访问
    this.webBrowser1.ObjectForScripting =this;

    }

    private void button1_Click(object sender, EventArgs e)
    {

    }
    // 提供给JavaScript调用的方法
    public void MyMessageBox(string message)
    {
    MessageBox.Show(message);
    }

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {

    }

    private void button1_Click_1(object sender, EventArgs e)
    {
    // 调用JavaScript的messageBox方法,并传入参数
    object[] objects = new object[1];
    objects[0] = “C#访问JavaScript脚本”;
    this.webBrowser1.Document.InvokeScript(“messageBox”, objects);
    }
    }

    test.html内容比较简单:

    <html>
    <head>
    <meta http-equiv=”Content-Language” content=”zh-cn”>
    <script language=”javascript” type=”text/javascript”>
    <!– 提供给C#程序调用的方法 –>
    function messageBox(message)
    {
    alert(message);
    }
    </script>
    </head>
    <body>
    <!– 调用C#方法 –>
    <button οnclick=”window.external.MyMessageBox(‘javascript访问C#代码’)” >
    javascript访问C#代码</button>
    </body>
    </html>

    配置运行成功的话,可以看到相互调用的效果,希望对需要的童鞋有用!

    补充一个js调用C#函数的方法:

    1,设置脚本对象:


    wb.ObjectForScripting = this; // wb为Webbrowser对象
    2,公开方法
    public void Alert()
    {
    MessageBox.Show("dkkfdkf");
    }
    3,然后页面上用javascript可以调用这个方法
    external.Alert();

     看了高人的博客,再补充几个,哈:

    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方法获取加密的结果。





    展开全文
  • var doc = this.WebBrowser.Document.DomDocument as IHTMLDocument2; var win = doc.parentWindow as IHTMLWindow2; string jscode = @"  //这里写JS代码 "; win.execScript(jscode, "javascrip...

    var doc = this.WebBrowser.Document.DomDocument as IHTMLDocument2;
    var win = doc.parentWindow as IHTMLWindow2;
    
    string jscode = @"
    
      //这里写JS代码
    
     ";
    
    win.execScript(jscode, "javascript");
    

     

      

     

    转载于:https://www.cnblogs.com/pasijiubiehuozhe/p/6201439.html

    展开全文
  • 聊做备忘。 假设js代码为: string jsCode = @"function showAlert(s) {{ alert('hello, world...那么,在WebBrowser文档加载完成后,两种方法可以执行它: 1、常规方法,追加script元素: var script = bro...
  • 由于visual studio2005 中WebBrowser控件已经实现了IDocHostUIHandler,所以 只要把应用程序属性类的 "com可见"选上. 再给 this.webBrowser1.ObjectForScripting = this; 赋值就行了 InvokeScript方式: 另外:...
  • 来自:...winform的WebBrowser控件,可以方便的载入页面并执行一些操作,我们可以注入自己的js脚本在页面中执行,方法如下: HtmlElement head = web
  • WebBrowser提供了InvokeScript这样的方法以提供在WebBrowser控件执行JS函数  但有时还是想象Chrome浏览器的控制台一样去执行一些非函数式的JS语句,这是可以利用WebBrowser的底层接口来实现  首先需要引入...
  • .Net中webBrowser控件指定IE版本

    千次阅读 2015-09-10 14:48:14
    今天采用.Net中的webBrowser控件时,发觉Angular控件无法正确执行。由于web程序是使用chrome浏览器进行开发,在测试过程中没遇到任何问题。打开IE进行测试,也是一切正常,经过检查,webBrowser默认使用IE7兼容模式...
  • 如我的webBrowser控件现在的URL加载为:...然后有一个控件“执行JS” 然后一点击他执行脚本 alert(document.getElementById("login").innerHtml); 得到结果:<span class="login">您还未登录!.... 谢谢
  • 还是处理视频下载所相关的问题。...c#中,我用WebBrowser这个控件处理。设置项目类型为控制台程序,加Form承载WebBrowser实现。 记录代码以做备忘: using System; using System.IO; using System.Net; using Syst...
  • 修改WebBrowser控件的内核解决方案   首先说一下原理 当下很大浏览器他们都是用了IE的core, 这个core只提供HTML/JS执行和渲染,并没有给出关于界面和一些特性上的事,所以开发自己浏览器如果基于IE ...
  • 修改WebBrowser控件的内核解决方案

    千次阅读 2016-01-28 14:27:52
    当下很大浏览器他们都是用了IE的core, 这个core只提供HTML/JS执行和渲染,并没有给出关于界面和一些特性上的事,所以开发自己浏览器如果基于IE core需要自己完成这些内容。 一张图很好的说明了这个情况,IE浏览器...
  • 当下很大浏览器他们都是用了IE的core, 这个core只提供HTML/JS执行和渲染,并没有给出关于界面和一些特性上的事,所以开发自己浏览器如果基于IE core需要自己完成这些内容。 一张图很好的说明了这个情况,IE浏览器...
  • 现在通过C#webBrowser控件 ``` string tag_lng = webBrowser.Document.GetElementById("mouselng").InnerText; string tag_lat = webBrowser.Document.GetElementById("mouselat").InnerText; 想获取 e....
  • 使用 WebBrowser 操作 js

    2011-11-09 18:02:00
    winForm下的WebBrowser控件可以执行当前页面已存在的js,但不支持自定义js操作。 因此要使用引用Microsoft.mshtml.dll来实现。 该dll里面的接口各负责不同的工作。 mshtml.IHTMLWindow2 可负责js操作。 ...
  • 最近在项目中需要使用MFC,我选择了Ribbon风格界面,Ribbon风格有它特殊的编辑控件,例如在Ribbon上放一个编辑控件和一个按钮,当我们双击按钮的时候就会读取编辑框中的数据并且通过WebBrowser控件执行JavaScript...
  • Visual Studio 中提供了...WebBrowser 本身提供了调用页面中 js 函数的方法,但没有直接提供可以添加执行新的 js 脚本的功能.如果有如下的 js函数: 1 <script type="text/javascript">2 function add(nu...
  • 名人名言:每个人在他生活中都经历过不幸和痛苦。有些人在苦难中只想到自己,他就悲观消极发出绝望的哀号;有些人在苦难中还想到别人,想到集体,想到祖先和...WebBrowser 本身提供了调用页面中 js 函数的方法, 但...
  • C#代码中执行js代码的方法

    千次阅读 2016-08-20 18:31:33
    先在form窗体中放一个浏览器控件webBrowser1, this.webBrowser1.Navigate("test.html");//浏览顺加载网页 this.webBrowser1.Document.InvokeScript("js方法名称","传给js方法的值");//执行js方法
  • 使用一个线程,并在线程中使用webBrowser控件来获取网页源代码,只有使用了webBrowser控件,才可以让网页执行js代码,获取真正的网页源代码。有使用线程超时设置,超时后就停止线程。
  • C#怎样抓取js执行完后的数据

    千次阅读 2019-02-25 12:30:01
    使用webBrowser控件,在Form1_Load事件中,将需要抓取的地址加载到webBrowser控件中。代码如下: webBrowser1.Navigate("...); 在webBrowser加载完之后,进行数据提取。...
  • 使 WebBrowser 更简单的插入、调用执行脚本, 可安装 jQuery 脚本的 C# 开源代码 - IEBrowser ... WebBrowser 本身提供了调用页面中 js 函数的方法, 但没有直接提供可以添加执行新的 js 脚本的功能.
  • 但是WebBrowser控件则没有这么聪明,它会弹出错误信息框,使得程序显的很不友好,而且会让一些自动执行的程序暂停。虽然WebBrowser提供了ScriptErrorsSuppressed属性,经过尝试,结果是令人遗憾的,通
  • 但是webbrowser控件则没有这么聪明,它会弹出错误信息框,使得程序显的很不友好,而且会让一些自动执行的程序暂停。虽然webbrowser提供了scripterrorssuppressed属性,经过尝试,结果是令人遗憾的,通过设置该属性.....
  • Visual Studio 中提供了浏览器控件 WebBrowser, 可以...WebBrowser 本身提供了调用页面中 js 函数的方法, 但没有直接提供可以添加执行新的 js 脚本的功能. 如果有如下的 js 函数: 1 < script t...
  • 但是WebBrowser控件则没有这么聪明,它会弹出错误信息框,使得程序显的很不友好,而且会让一些自动执行的程序暂停。虽然WebBrowser提供了ScriptErrorsSuppressed属性,经过尝试,结果是令人遗憾的,通过设置该...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

webbrowser控件执行js