WebView.AddWebAllowedObject(String, Object) 方法

定义

将本机Windows 运行时对象作为全局参数添加到 WebView 内的顶级文档。

public:
 virtual void AddWebAllowedObject(Platform::String ^ name, Platform::Object ^ pObject) = AddWebAllowedObject;
void AddWebAllowedObject(winrt::hstring const& name, IInspectable const& pObject);
public void AddWebAllowedObject(string name, object pObject);
function addWebAllowedObject(name, pObject)
Public Sub AddWebAllowedObject (name As String, pObject As Object)

参数

name
String

Platform::String

winrt::hstring

要向 WebView 中的文档公开的对象的名称。

pObject
Object

Platform::Object

IInspectable

要向 WebView 中的文档公开的对象。

示例

此示例演示如何使用 AllowForWeb 属性修饰类。

using Windows.Foundation.Metadata;

namespace MyRuntimeComponent
{
    [AllowForWeb]
    public sealed class MyNativeClass
    {
        public void NativeMethod()
        {
            ...
        }

        ...
    }
}

此示例演示如何在导航开始时使用 NavigationStarting 事件注入对象。

<WebView x:Name="webView" Source="https://www.contoso.com/index.html"
         NavigationStarting="webView_NavigationStarting"/>
private void webView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args) 
{ 
    if (args.Uri.Host == "www.contoso.com")  
    { 
        webView.AddWebAllowedObject("nativeObject", new MyNativeClass()); 
    } 
} 

下面介绍如何在网页的脚本中访问本机对象。

<script type='text/javascript'>
    nativeObject.nativeMethod(); // Call the projected WinRT method.
</script>

注解

使用此方法将本机Windows 运行时对象公开为 WebView 内顶级文档上下文中的全局参数。 要投影Windows 运行时对象,它必须敏捷并使用 AllowForWeb 属性进行修饰。

注意

默认情况下,使用 Microsoft Visual Basic、C# 或 Visual C++ 组件扩展 (C++/CX) 创建的运行时类是敏捷的。 有关详细信息,请参阅线程处理和封送处理和使用多线程环境中的Windows 运行时对象

传递到 AddWebAllowedObject 的对象必须从独立于应用程序集的 Windows 运行时 组件导入。 这是 AllowForWeb 属性由 WebView 安全子系统标识的属性所必需的。 如果使用应用项目中的类,则 AddWebAllowedObject 不起作用。

每次将 WebView 导航到访问本机对象的新页面时,都必须调用 AddWebAllowedObject。 可以使用 WebView.NavigationStarting 事件在导航开始时注入对象。

适用于