winforms 如何在Windows应用程序中使用CoreWebView2Frame类

ckx4rj1h  于 2023-01-05  发布在  Windows
关注(0)|答案(1)|浏览(254)

我有一个windows webview2应用程序,我们正在自动化第三方网站与太多的嵌套iframe,我想在一个特定的iframe执行javascript。我想知道如何获得CoreWebView2Frame示例为特定的iframe使用Webview2。微软文档没有帮助。
我正在寻找一个例子或文档与CoreWebView2Frame类一起工作,并显示如何使用CoreWebView2Frame.ExecuteAsync()在特定的iframe中执行javascript。
我已经看过了this thread,但它对我来说太难理解了。

y4ekin9u

y4ekin9u1#

您可以通过处理FrameCreated事件获得CoreWebView2Frame,并在以后使用它。

    • 示例:**

在下面的示例中,WebView2浏览this Uri,然后我们在页面中找到iframe,并将其存储以供以后使用。稍后,当用户单击WinForms应用程序上的按钮时,使用iframe的ExecuteScriptAsync方法,我们以编程方式单击iframe中的链接。
为此,在窗体上放置一个WebView2和一个Button,处理窗体的Load事件和按钮的Click事件,并将代码修改如下:

//using Microsoft.Web.WebView2.Core;

CoreWebView2Frame sampleFrame;
private async void Form1_Load(object sender, EventArgs e)
{
    webView21.Source = new Uri(
        "https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_link_test");
    await webView21.EnsureCoreWebView2Async();
    webView21.CoreWebView2.FrameCreated += CoreWebView2_FrameCreated;
}
private void CoreWebView2_FrameCreated(object? sender, 
    CoreWebView2FrameCreatedEventArgs e)
{
    if (e.Frame.Name == "iframeResult")
    {
        sampleFrame = e.Frame;
    }
}
private async void button1_Click(object sender, EventArgs e)
{
    if (sampleFrame != null && sampleFrame.IsDestroyed() == 0)
    {
        await sampleFrame.ExecuteScriptAsync(
            "document.getElementsByTagName('a')[0].click();");
    }
}

现在如果你点击这个按钮,iframe里面的链接就会被点击。

相关问题