[转载]在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码 - 郑文亮 - 博客园

[转载]在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脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册