http://support.microsoft.com/kb/815714/zh-cn
本文介绍如何使用NewWindow2事件时触发由 Microsoft Internet Explorer 4.0 和更高版本,包括 Microsoft web 浏览器控件。您可以使用此事件来指定在每次打开新的浏览器窗口时使用您的浏览器程序。本文介绍此过程对于 Visual C#。
NewWindow2 事件
NewWindow2事件发生时创建一个新窗口以显示资源。从web 浏览器控件 (例如,在为目标的新窗口或脚本的window.open方法导航到的响应) 创建一个新窗口之前,将到达此事件。
若要指定在每次打开新窗口时使用您的浏览器程序,将ppDisp设置为等于新的web 浏览器对象,它包含在您的程序创建一个新窗口中。在这种情况下,如果用户选择在新窗口中打开 Web 页在程序中的新窗口用于显示新的 Web 页。
此外, RegisterAsBrowser属性设置为true的控件参与窗口名称解析为新的web 浏览器控件。例如,如果在脚本中其他地方使用窗口名称,则此控件使用而不是新建一个因为控件打开一个新窗口之前检查所有现有的窗口名。
创建项目并添加代码
下面的示例将定向到下面的 Web 站点的web 浏览器控件:
http://www.microsoft.com
(http://www.microsoft.com)
- 开始 Microsoft Visual Studio。
- 创建新 Visual C# Windows 窗体 Applicationproject。
- 在工具箱中,单击常规面板中。
- 用鼠标右键单击打开的面板,然后单击选择项目。
- 单击COM 组件选项卡,单击以选中Microsoft Web 浏览器复选框,然后单击确定。
- 在工具箱中,双击新添加的 Microsoft Web 浏览器控件,以将其添加到您的窗体。
- 向表单中添加一个按钮控件和一个文本框控件。
- 双击该按钮以在代码窗口中查看的onClick事件中的实现。添加到文本框中指定的 URL 将浏览下面的代码:
private void button1_Click(object sender, System.EventArgs e) { object obj = null; axWebBrowser1.Navigate(textBox1.Text, ref obj, ref obj, ref obj, ref obj); }
- 在解决方案资源管理器中,用鼠标右键单击Form1,然后单击视图设计器。请单击右axWebBrowser1控件,并单击属性。单击事件图标,然后双击NewWindow2添加 NewWindow2 事件的事件处理程序。将下面的代码添加到NewWindow2事件:
private void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e) { Form1 frmWB; frmWB = new Form1(); frmWB.axWebBrowser1.RegisterAsBrowser = true; e.ppDisp = frmWB.axWebBrowser1.Application; frmWB.Visible = true; }
验证
- 启动记事本),然后将下面的文本保存为Test.htm ,在您的 Web 服务器上:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <TITLE>Q311282</TITLE> <SCRIPT type = "text/Jscript"> function openWin() { var win; win = window.open("http://www.microsoft.com"); } </SCRIPT> </HEAD> <BODY> <button onClick="openWin()">Open New Window</button> </BODY> </HTML>
- 在 Visual Studio 中,请单击调试菜单运行该应用程序上的开始按钮。
- 此时将显示 Form1。将文本框中的文本更改为 URLof Test.htm 页中。
- 单击button1。
- Test.htm 出现在web 浏览器控件。单击新窗口中打开。请注意该程序的新实例中打开的那个 theMicrosoft Web 页。