<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>浮山狼de博客 &#187; c#</title>
	<atom:link href="https://www.fushanlang.com/tag/c-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fushanlang.com</link>
	<description>next station - 下一站，活在当下，且行且思</description>
	<lastBuildDate>Sat, 29 Nov 2014 15:14:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.5</generator>
	<item>
		<title>c#使用webbrowser控件与javascript交互</title>
		<link>https://www.fushanlang.com/c-webbrowser-communicate-with-javascript-1606/</link>
		<comments>https://www.fushanlang.com/c-webbrowser-communicate-with-javascript-1606/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 11:21:16 +0000</pubDate>
		<dc:creator><![CDATA[fushanlang]]></dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.fushanlang.com/blog/?p=1606</guid>
		<description><![CDATA[<p>C#通过webbrowser控件与javascript交互</p> <p>1.C#里调用控件里面网页的js函数</p> <p>// 调用JavaScript的messageBox方法，并传入参数 object[] objects = new object[1]; objects[0] = &#8220;C#访问JavaScript脚本&#8221;;</p> <p>this.webBrowser1.Document.InvokeScript(&#8220;messageBox&#8221;, objects);</p> <p>//object就是传入的参数，而messageBox则是网页中预定义好的js函数。</p> <p>通过这种方式C#里面就可以执行Javascript函数，可以把上面的代码放到一个button的click事件里面。</p> <p>2.C#windows窗体应用webbrowser控件里网页js调用C#窗体的函数</p> <p>首先需要在代码里面加上</p> <p>[System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class Form1 : Form</p> <p>{</p> <p>&#8230;..//</p> <p>}</p> <p>这样使得C#的com对象是对网页里的javascript可见的。</p> <p>然后在嵌入网页里面通过“window.external.MyMessageBox(&#8216;javascript访问C#代码&#8217;)” ,即通过window.external捕获调用c#定义好的函数。</p> <p>具体Form.cs代码如下(通过vs2008创建的c#window窗体应用，拖拽上一个webbrowser控件和button控件。)：</p> <p>[System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class Form1 : Form { public Form1() { InitializeComponent(); System.IO.FileInfo file = new System.IO.FileInfo(&#8220;test.html&#8221;); // WebBrowser控件显示的网页路径 this.webBrowser1.Url = new <span style="color:#777"> . . . &#8594; Read More: <a href="https://www.fushanlang.com/c-webbrowser-communicate-with-javascript-1606/">c#使用webbrowser控件与javascript交互</a></span>]]></description>
				<content:encoded><![CDATA[<p>C#通过webbrowser控件与javascript交互</p>
<p>1.C#里调用控件里面网页的js函数</p>
<p>// 调用JavaScript的messageBox方法，并传入参数<br />
object[] objects = new object[1];<br />
objects[0] = &#8220;C#访问JavaScript脚本&#8221;;</p>
<p>this.webBrowser1.Document.InvokeScript(&#8220;messageBox&#8221;, objects);</p>
<p>//object就是传入的参数，而messageBox则是网页中预定义好的js函数。</p>
<p>通过这种方式C#里面就可以执行Javascript函数，可以把上面的代码放到一个button的click事件里面。</p>
<p>2.C#windows窗体应用webbrowser控件里网页js调用C#窗体的函数</p>
<p>首先需要在代码里面加上<span id="more-1606"></span></p>
<p><span style="color: #339966;">[System.Runtime.InteropServices.ComVisibleAttribute(true)] </span><br />
public partial class Form1 : Form</p>
<p>{</p>
<p>&#8230;..//</p>
<p>}</p>
<p>这样使得C#的com对象是对网页里的javascript可见的。</p>
<p>然后在嵌入网页里面通过“window.external.MyMessageBox(&#8216;javascript访问C#代码&#8217;)” ,即通过window.external捕获调用c#定义好的函数。</p>
<p>具体Form.cs代码如下(通过vs2008创建的c#window窗体应用，拖拽上一个webbrowser控件和button控件。)：</p>
<p>[System.Runtime.InteropServices.ComVisibleAttribute(true)]<br />
public partial class Form1 : Form<br />
{<br />
public Form1()<br />
{<br />
InitializeComponent();<br />
System.IO.FileInfo file = new System.IO.FileInfo(&#8220;test.html&#8221;);<br />
// WebBrowser控件显示的网页路径<br />
this.webBrowser1.Url = new Uri(file.FullName);<br />
// 将当前类设置为可由脚本访问<br />
this.webBrowser1.ObjectForScripting =this;</p>
<p>}</p>
<p>private void button1_Click(object sender, EventArgs e)<br />
{</p>
<p>}<br />
// 提供给JavaScript调用的方法<br />
public void MyMessageBox(string message)<br />
{<br />
MessageBox.Show(message);<br />
}</p>
<p>private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)<br />
{</p>
<p>}</p>
<p>private void button1_Click_1(object sender, EventArgs e)<br />
{<br />
// 调用JavaScript的messageBox方法，并传入参数<br />
object[] objects = new object[1];<br />
objects[0] = &#8220;C#访问JavaScript脚本&#8221;;<br />
this.webBrowser1.Document.InvokeScript(&#8220;messageBox&#8221;, objects);<br />
}<br />
}</p>
<p>test.html内容比较简单：</p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&#8221;Content-Language&#8221; content=&#8221;zh-cn&#8221;&gt;<br />
&lt;script language=&#8221;javascript&#8221; type=&#8221;text/javascript&#8221;&gt;<br />
&lt;!&#8211; 提供给C#程序调用的方法 &#8211;&gt;<br />
function messageBox(message)<br />
{<br />
alert(message);<br />
}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;!&#8211; 调用C#方法 &#8211;&gt;<br />
&lt;button onclick=&#8221;window.external.MyMessageBox(&#8216;javascript访问C#代码&#8217;)&#8221; &gt;<br />
javascript访问C#代码&lt;/button&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>配置运行成功的话，可以看到相互调用的效果，希望对需要的童鞋有用！</p>
]]></content:encoded>
			<wfw:commentRss>https://www.fushanlang.com/c-webbrowser-communicate-with-javascript-1606/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
