[转载]在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码 – 郑文亮 – 博客园.
【实例简介】
涵盖了几种常用的 webBrowser执行JavaScript的方法,详见示例截图以及代码
【实例截图】
【核心代码】
execScript方式:
<span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > mshtml</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Collections</span><span class = "pun" >.</span><span class = "typ" >Generic</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >ComponentModel</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Data</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Drawing</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Linq</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Windows</span><span class = "pun" >.</span><span class = "typ" >Forms</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > namespace </span><span class = "pln" > </span><span class = "typ" >WebBrowser_Script</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" >partial</span><span class = "pln" > </span><span class = "kwd" > class </span><span class = "pln" > execScriptForm </span><span class = "pun" >:</span><span class = "pln" > </span><span class = "typ" >Form</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > execScriptForm</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >InitializeComponent</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > btnOpen_Click</span><span class = "pun" >(</span><span class = "kwd" > object </span><span class = "pln" > sender</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >EventArgs</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >webBrowser1</span><span class = "pun" >.</span><span class = "typ" >Navigate</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >txtUrl</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > webBrowser1_DocumentCompleted</span><span class = "pun" >(</span><span class = "kwd" > object </span><span class = "pln" > sender</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >WebBrowserDocumentCompletedEventArgs</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >IHTMLDocument2</span><span class = "pln" > </span><span class = "typ" >Doc2</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "pun" >(</span><span class = "typ" >IHTMLDocument2</span><span class = "pun" >)</span><span class = "pln" >webBrowser1</span><span class = "pun" >.</span><span class = "typ" >Document</span><span class = "pun" >.</span><span class = "typ" >DomDocument</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "typ" >Doc2</span><span class = "pun" >.</span><span class = "pln" >parentWindow </span><span class = "pun" >!=</span><span class = "pln" > </span><span class = "kwd" > null </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > order </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > " alert('这里可以执行页面中存在的任意函数' document.body.innerHTML); " </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "com" > //MessageBox.Show(order);</span><span class="pln"> </span><span class = "typ" >Doc2</span><span class = "pun" >.</span><span class = "pln" >parentWindow</span><span class = "pun" >.</span><span class = "pln" >execScript</span><span class = "pun" >(</span><span class = "pln" >order</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "JavaScript" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span> |
NavigateScript方式:
<span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Collections</span><span class = "pun" >.</span><span class = "typ" >Generic</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >ComponentModel</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Data</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Drawing</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Linq</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Runtime</span><span class = "pun" >.</span><span class = "typ" >InteropServices</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Windows</span><span class = "pun" >.</span><span class = "typ" >Forms</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > namespace </span><span class = "pln" > </span><span class = "typ" >WebBrowser_Script</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "pun" >[</span><span class = "typ" >ComVisible</span><span class = "pun" >(</span><span class = "kwd" > true </span><span class = "pun" >)]</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" >partial</span><span class = "pln" > </span><span class = "kwd" > class </span><span class = "pln" > </span><span class = "typ" >NavigateScriptForm</span><span class = "pln" > </span><span class = "pun" >:</span><span class = "pln" > </span><span class = "typ" >Form</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >NavigateScriptForm</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >InitializeComponent</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > btnOpen_Click</span><span class = "pun" >(</span><span class = "kwd" > object </span><span class = "pln" > sender</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >EventArgs</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >webBrowser1</span><span class = "pun" >.</span><span class = "typ" >Navigate</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >txtUrl</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > webBrowser1_DocumentCompleted</span><span class = "pun" >(</span><span class = "kwd" > object </span><span class = "pln" > sender</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >WebBrowserDocumentCompletedEventArgs</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > webBrowser1</span><span class = "pun" >.</span><span class = "typ" >Navigate</span><span class = "pun" >(@</span><span class = "str" >"javascript: function alert(str) { window.external.alertMessage(str); } "</span><span class=" pun ">);</span><span class=" pln"> webBrowser1</span><span class = "pun" >.</span><span class = "typ" >ObjectForScripting</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > alertMessage</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pln" > s</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >MessageBox</span><span class = "pun" >.</span><span class = "typ" >Show</span><span class = "pun" >(</span><span class = "pln" >s</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "这是自定义的title,呵呵呵" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > </span><span class = "typ" >NavigateScriptForm_Load</span><span class = "pun" >(</span><span class = "kwd" > object </span><span class = "pln" > sender</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >EventArgs</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > webBrowser1</span><span class = "pun" >.</span><span class = "typ" >DocumentText</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "pun" >@</span><span class = "str" >" "</span><span class=" pun ">;</span><span class=" pln"> </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span> |
InvokeScript方式:
<span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Collections</span><span class = "pun" >.</span><span class = "typ" >Generic</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >ComponentModel</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Data</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Drawing</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Linq</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pln" > </span><span class = "typ" >System</span><span class = "pun" >.</span><span class = "typ" >Windows</span><span class = "pun" >.</span><span class = "typ" >Forms</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > namespace </span><span class = "pln" > </span><span class = "typ" >WebBrowser_Script</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" >partial</span><span class = "pln" > </span><span class = "kwd" > class </span><span class = "pln" > </span><span class = "typ" >InvokeScriptForm</span><span class = "pln" > </span><span class = "pun" >:</span><span class = "pln" > </span><span class = "typ" >Form</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >InvokeScriptForm</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >InitializeComponent</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >webBrowser1</span><span class = "pun" >.</span><span class = "typ" >Navigate</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >txtUrl</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > btnOpen_Click</span><span class = "pun" >(</span><span class = "kwd" > object </span><span class = "pln" > sender</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >EventArgs</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > input </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >webBrowser1</span><span class = "pun" >.</span><span class = "typ" >Document</span><span class = "pun" >.</span><span class = "typ" >GetElementById</span><span class = "pun" >(</span><span class = "str" > "kw" </span><span class = "pun" >);</span><span class = "pln" > input</span><span class = "pun" >.</span><span class = "typ" >SetAttribute</span><span class = "pun" >(</span><span class = "str" > "value" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "好例子网" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > button </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >webBrowser1</span><span class = "pun" >.</span><span class = "typ" >Document</span><span class = "pun" >.</span><span class = "typ" >GetElementById</span><span class = "pun" >(</span><span class = "str" > "su" </span><span class = "pun" >);</span><span class = "pln" > button</span><span class = "pun" >.</span><span class = "typ" >InvokeMember</span><span class = "pun" >(</span><span class = "str" > "click" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > webBrowser1_DocumentCompleted</span><span class = "pun" >(</span><span class = "kwd" > object </span><span class = "pln" > sender</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >WebBrowserDocumentCompletedEventArgs</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span> |
另外:InvokeScript 还可以带参数的形式执自定义行脚本方法
例如: webBrowser1.Document.InvokeScript(“getPwd“, new object[] { “18780110000“ })
标签: WebBrowser Javascript