WebView2 AddHostObjectToScript 无法访问带参数的函数
WebView2 AddHostObjectToScript can't access function with parameters
我一直在关注微软官方网站上 webview2 的文档,但我遇到了一个我不确定如何解决的问题。
我使用 AddHostObjectToScript 添加了一个 .NET 对象,只要该函数没有参数,它就可以工作。在JS中调用带参数的对象函数时,一直报“参数不正确”的错误
这就是我在 angular 应用程序中调用主机对象的方式:
result = await window?.chrome?.webview?.hostObjects.bridge.Func("John");
这是我的 WinUI 3.0 应用:
[ComVisible(true)]
public class Bridge
{
public string Func(string param)
{
return "Example: " + param;
}
public string Sample()
{
return "Example: ";
}
public BridgeAnotherClass AnotherObject { get; set; } = new BridgeAnotherClass();
// Sample indexed property.
[System.Runtime.CompilerServices.IndexerName("Items")]
public string this[int index]
{
get { return m_dictionary[index]; }
set { m_dictionary[index] = value; }
}
private Dictionary<int, string> m_dictionary = new Dictionary<int, string>();
}
public sealed partial class WebViewPage : Page
{
public WebViewViewModel ViewModel { get; }
public WebViewPage()
{
ViewModel = Ioc.Default.GetService<WebViewViewModel>();
InitializeComponent();
ViewModel.WebViewService.Initialize(webView);
webView.WebMessageReceived += getMsg;
InitializeAsync();
}
async void InitializeAsync()
{
await webView.EnsureCoreWebView2Async();
var interop = webView.CoreWebView2.As<ICoreWebView2Interop>();
interop.AddHostObjectToScript("bridge", new Bridge());
}
WebView2 目前存在一个问题,即 WinRT API 的互操作接口 AddHostObjectToScript 不能很好地与 .NET 对象一起工作。这是 WebView2 中的错误。
我一直在关注微软官方网站上 webview2 的文档,但我遇到了一个我不确定如何解决的问题。
我使用 AddHostObjectToScript 添加了一个 .NET 对象,只要该函数没有参数,它就可以工作。在JS中调用带参数的对象函数时,一直报“参数不正确”的错误
这就是我在 angular 应用程序中调用主机对象的方式:
result = await window?.chrome?.webview?.hostObjects.bridge.Func("John");
这是我的 WinUI 3.0 应用:
[ComVisible(true)]
public class Bridge
{
public string Func(string param)
{
return "Example: " + param;
}
public string Sample()
{
return "Example: ";
}
public BridgeAnotherClass AnotherObject { get; set; } = new BridgeAnotherClass();
// Sample indexed property.
[System.Runtime.CompilerServices.IndexerName("Items")]
public string this[int index]
{
get { return m_dictionary[index]; }
set { m_dictionary[index] = value; }
}
private Dictionary<int, string> m_dictionary = new Dictionary<int, string>();
}
public sealed partial class WebViewPage : Page
{
public WebViewViewModel ViewModel { get; }
public WebViewPage()
{
ViewModel = Ioc.Default.GetService<WebViewViewModel>();
InitializeComponent();
ViewModel.WebViewService.Initialize(webView);
webView.WebMessageReceived += getMsg;
InitializeAsync();
}
async void InitializeAsync()
{
await webView.EnsureCoreWebView2Async();
var interop = webView.CoreWebView2.As<ICoreWebView2Interop>();
interop.AddHostObjectToScript("bridge", new Bridge());
}
WebView2 目前存在一个问题,即 WinRT API 的互操作接口 AddHostObjectToScript 不能很好地与 .NET 对象一起工作。这是 WebView2 中的错误。