启用 .Net 本机工具链时 AddWebAllowedObject 不工作
AddWebAllowedObject is not working when .Net Native Tool Chain is Enabled
我创建了嵌入了 webview 的 UWP 应用程序。网络视图加载了网络应用程序的 URL。
Web 应用程序在 window object 中添加了 JavaScript object。
example:window.html_communicator
Web 应用程序使用此 html_communicator object 并调用其上的某些方法以调用 UWP 应用程序上的回调。
例如,可以在 html_communicator 上定义一个名为 onLocationSelect 的方法,网络应用程序将在某些用户交互时调用此方法。
UWP 应用程序通过在 WebView 上调用 addWebAllowedObject 来注册方法。
当我禁用 .Net Native Tool Chain 时,回调工作正常。
但是当启用 .Net Natvie 工具链时,这些回调无法正常工作。
下面是一个 javascript 代码片段,它在单击按钮时调用桥接方法。
var html_communicator = html_communicator || {};
window.onload = function () {
document.getElementById("locationSelect")
.addEventListener("click", () => {
if (html_communicator && html_communicator.onLocationSelect) {
document.getElementById("msg").innerHTML = `Successfully called bridge method: Button clicked at ${new Date()}`;
sumorea_app.onLocationSelect();
}
else {
document.getElementById("msg").innerHTML = `Failed to call bridge method: Button clicked at ${new Date()}`;
}
})
}
The callbacks are working fine when I disabled .Net Native Tool Chain. But these callbacks are not working fine when .Net Natvie Tool Chain is enabled.
请参考webview官方document,另外,WebView中受信任的JavaScript内容可以直接访问WindowsRuntimeAPI。这为 WebView 中托管的 Web 应用程序提供了强大的本机功能。要启用此功能,必须将受信任内容的统一资源标识符 (URI) 添加到 Package.appxmanifest 中应用的 ApplicationContentUriRules 的白名单中,并将 WindowsRuntimeAccess 专门设置为“all”。
对于 Xamarin 解决方案,您需要检查是否已为 UWP 项目添加上述白名单。
我创建了嵌入了 webview 的 UWP 应用程序。网络视图加载了网络应用程序的 URL。 Web 应用程序在 window object 中添加了 JavaScript object。 example:window.html_communicator
Web 应用程序使用此 html_communicator object 并调用其上的某些方法以调用 UWP 应用程序上的回调。
例如,可以在 html_communicator 上定义一个名为 onLocationSelect 的方法,网络应用程序将在某些用户交互时调用此方法。 UWP 应用程序通过在 WebView 上调用 addWebAllowedObject 来注册方法。
当我禁用 .Net Native Tool Chain 时,回调工作正常。 但是当启用 .Net Natvie 工具链时,这些回调无法正常工作。
下面是一个 javascript 代码片段,它在单击按钮时调用桥接方法。
var html_communicator = html_communicator || {};
window.onload = function () {
document.getElementById("locationSelect")
.addEventListener("click", () => {
if (html_communicator && html_communicator.onLocationSelect) {
document.getElementById("msg").innerHTML = `Successfully called bridge method: Button clicked at ${new Date()}`;
sumorea_app.onLocationSelect();
}
else {
document.getElementById("msg").innerHTML = `Failed to call bridge method: Button clicked at ${new Date()}`;
}
})
}
The callbacks are working fine when I disabled .Net Native Tool Chain. But these callbacks are not working fine when .Net Natvie Tool Chain is enabled.
请参考webview官方document,另外,WebView中受信任的JavaScript内容可以直接访问WindowsRuntimeAPI。这为 WebView 中托管的 Web 应用程序提供了强大的本机功能。要启用此功能,必须将受信任内容的统一资源标识符 (URI) 添加到 Package.appxmanifest 中应用的 ApplicationContentUriRules 的白名单中,并将 WindowsRuntimeAccess 专门设置为“all”。
对于 Xamarin 解决方案,您需要检查是否已为 UWP 项目添加上述白名单。