用了.Net下的WebBrowser 结果不执行javascript中的window.open
http://support.microsoft.com/kb/311290
创建示例
本节介绍如何承载 WebBrowser 控件在 Visual Basic.NET 应用程序中的、 如何处理 NewWindow2 事件,在 WebBrowser 控件的以及然后如何处理 WindowSetWidth 与 WindowSetHeight 事件调整您的应用程序。
- 如下所示在 Visual Basic 中创建新的 Windows 应用程序:
- 启动 Visual Studio.NET。
- 在 文件 菜单上指向 新建 ,然后单击 项目 。
- 在 项目类型 ,下单击 Visual Basic 项目 。 在 模板 ,下单击 Windows 应用程序 。
- 在工具箱中,单击 常规 ,右键单击,将的工具箱,然后单击 自定义工具箱 。
- 在 COM 组件 选项卡上选中 Microsoft Web 浏览器 复选框,然后单击 确定 。
- 在工具箱,双击在资源管理器窗口。
- 向窗体,请添加一个 Button 控件和一个 TextBox 控件。
- 双击若要查看到代码窗口中的按钮的 onClick 事件的在实现该按钮,然后添加以下代码: 此代码允许您浏览到您在文本框中指定的 URL。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub
- 添加以下代码为 NewWindow2 编写处理程序函数:
Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True End Sub
- 添加以下代码为 WindowSetHeight 编写处理程序函数:
Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub
- 添加以下代码为 WindowSetWidth 编写处理程序函数:
Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End Sub
完成代码示例
Public Class Form1 Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code " 'Omitted#End Region Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 'MessageBox.Show(AxWebBrowser1.Height & ":" & AxWebBrowser1.Width) 'MessageBox.Show(doc.body.innerHTML) Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True 'frmWB.AxWebBrowser1.Navigate2("about:blank") e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True 'MessageBox.Show(frmWB.AxWebBrowser1.Height & ":" & frmWB.AxWebBrowser1.Width) End Sub Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight 'MessageBox.Show("In SetHeight" & Me.Height & ":" & e.height) Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth 'MessageBox.Show("In SetWidth" & Me.Width & ":" & e.width) Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End SubEnd Class 验证在工作的
- 生成应用程序。
- 打开记事本。 创建一个名为 Test.htm 的新文件,然后添加以下代码:
<HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"><TITLE></TITLE><script> function openWin() { var win; win = window.open("http://www.microsoft.com","blah","width=600, height=600"); }</script></HEAD><BODY><button onClick=openWin()>Open Window</button></BODY></HTML> - 将 test.htm 保存您的 Web 服务器上中。
- 运行该应用程序。
- 浏览到该 test.htm 页,然后单击按钮。 注意 Microsoft 公司 Web 站点打开应用程序的新实例中。 在窗体根据会调整通过 window.open 调用传递的功能。
回到顶端