只是从这里尝试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;
}
}
}