如何从WebView2中的ExecuteScript获取同步返回



只是从这里尝试Winforms WebView2:https://github.com/michael-russin/webview2-control

试图找出如何同步使用ExecuteScript。以任何方式阻塞线程都会阻止脚本运行。

Friend Function ExecuteSync(Script As String) As String
ExecuteScript(Script, Sub(e) ExecuteSync = e.ResultAsJson)
End Function

感谢您的帮助,因为我找不到任何关于如何做到这一点的例子。

不知道Michael版本的webview2包装器,但如果您使用官方的Microsoft One:

https://learn.microsoft.com/en-us/microsoft-edge/webview2/webview2-api-reference

它的方法和属性名称与Michael的版本大致相同。

然后,只需使用以下代码在主机对象数组中找到的同步对象,就可以从JavaScript代码中获得对任何对象的同步调用:

var mynum = chrome.webview.hostObjects.sample.myMethod().sync();

在C#中(对不起,我不知道VB的等价物(,你可以在一个类中实现"myMethod",如下所示:

using Microsoft.Web.WebView2.Core;
using System.Runtime.InteropServices;
namespace EdgeWebView2Test.MyClasses
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class MyJavaScriptApiClass
{
public int MyMethod()
{
return 10;
}
}
}

最新更新