两个Web浏览器之间的交互

时间:2017-11-03 08:14:14

标签: html vb.net web triggers webbrowser-control

嗨,我有一点“为什么你会打扰”的问题,但它对我的应用程序很重要我试图建立(这是长话短说)。

我的应用程序由两个并排的Web浏览器组成,其中一个触发器(例如一个按钮),另一个显示的另一个相关动作(例如警报弹出窗口)可以使用vb .net语言?

1 个答案:

答案 0 :(得分:0)

如果您控制他们托管的内容,则可以在有限的程度上实现。

好消息是,使用ObjectForScripting属性,您可以将数据从javascript传递到.net,然后再次传输,以便一个Web浏览器可以对另一个进行响应。

另一个好消息是他们将使用相同的WinInet缓存。因此,如果您为网站创建cookie,如果它是会话cookie等,则两个浏览器都可能会读取它。

虽然我需要更多地了解您的想法,以便为您提供更好,更详细的答案。

以下是来自MSDN上的objectforscipting的一些示例代码,其中显示了如何与单个Web浏览器控件进行交互

    Imports System
    Imports System.Windows.Forms
    Imports System.Security.Permissions

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")>
    <System.Runtime.InteropServices.ComVisibleAttribute(True)>
    Public Class Form1
        Inherits Form

        Private webBrowser1 As New WebBrowser()
        Private WithEvents button1 As New Button()

        <STAThread()>
        Public Shared Sub Main()
            Application.EnableVisualStyles()
            Application.Run(New Form1())
        End Sub

        Public Sub New()
            button1.Text = "call script code from client code"
            button1.Dock = DockStyle.Top
            webBrowser1.Dock = DockStyle.Fill
            Controls.Add(webBrowser1)
            Controls.Add(button1)
        End Sub

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
            Handles Me.Load

            webBrowser1.AllowWebBrowserDrop = False
            webBrowser1.IsWebBrowserContextMenuEnabled = False
            webBrowser1.WebBrowserShortcutsEnabled = False
            webBrowser1.ObjectForScripting = Me
            ' Uncomment the following line when you are finished debugging.
            'webBrowser1.ScriptErrorsSuppressed = True

            webBrowser1.DocumentText =
                "<html><head><script>" &
                "function test(message) { alert(message); }" &
                "</script></head><body><button " &
                "onclick=""window.external.Test('called from script code')"" > " &
                "call client code from script code</button>" &
                "</body></html>"
        End Sub

        Public Sub Test(ByVal message As String)
            MessageBox.Show(message, "client code")
        End Sub

        Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
            Handles button1.Click

            webBrowser1.Document.InvokeScript("test",
                New String() {"called from client code"})

        End Sub

    End Class