WebView.ScriptNotify 事件

定义

WebView 控件中包含的内容使用 JavaScript 将字符串传递给应用程序时发生。

public:
 virtual event NotifyEventHandler ^ ScriptNotify;
// Register
event_token ScriptNotify(NotifyEventHandler const& handler) const;

// Revoke with event_token
void ScriptNotify(event_token const* cookie) const;

// Revoke with event_revoker
WebView::ScriptNotify_revoker ScriptNotify(auto_revoke_t, NotifyEventHandler const& handler) const;
public event NotifyEventHandler ScriptNotify;
function onScriptNotify(eventArgs) { /* Your code */ }
webView.addEventListener("scriptnotify", onScriptNotify);
webView.removeEventListener("scriptnotify", onScriptNotify);
- or -
webView.onscriptnotify = onScriptNotify;
Public Custom Event ScriptNotify As NotifyEventHandler 
<WebView ScriptNotify="eventhandler"/>

事件类型

示例

下面的代码示例演示如何在为 Windows 8 编译的应用中使用 ScriptNotify 事件。 从 Windows 8.1 开始,省略与 AllowedScriptNotifyUris 相关的行。

public MyPage()
{
    this.InitializeComponent();
    MyWebView.ScriptNotify += MyWebView_ScriptNotify;

    // Here we have to set the AllowedScriptNotifyUri property because we are 
    // navigating to some site where we don't own the content and we want to 
    // allow window.external.notify() to pass data back to the app.
    List<Uri> allowedUris = new List<Uri>();
    allowedUris.Add(new Uri("http://www.bing.com"));
    MyWebView.AllowedScriptNotifyUris = allowedUris;
}

void MyWebView_ScriptNotify(object sender, NotifyEventArgs e)
{
    // Respond to the script notification.
}

注解

当页面调用 window.external.notify 并传递字符串参数时,托管的 HTML 页面可以在 UWP 应用中触发 ScriptNotify 事件。

注意

由于此事件是由外部代码发起的,因此应注意放入事件处理程序的内容。 若要防止恶意脚本利用此事件,请务必仅为受信任的 URI 启用它,如下所述。

Windows 8.1

若要使外部网页在调用 window.external.notify 时触发 ScriptNotify 事件,必须在应用清单的 ApplicationContentUriRules 节中包含该页面的 URI。 (可以在 Visual Studio 中的 Package.appxmanifest designer. ) 此列表中的 URI 必须使用 HTTPS,并且可能包含子域通配符 (例如“https://.microsoft.com”) ,但它们不能包含域通配符 (例如“https://.com”和“https://”。) 。 该部件清单要求不适用于源自应用包的内容、使用 ms-local-stream:// URI 的内容或使用 NavigateToString 加载的内容。

注意

如果有多个子域,则必须为每个子域使用一个通配符。 例如,“https://*.microsoft.com”与“https:// any.microsoft.com”匹配,但与“https:// this”匹配。any.microsoft.com.”

这些更改不会影响为 Windows 8 编译的应用,即使在 Windows 8.1 上运行也是如此。

为Windows 8.1编译的应用不支持 AllowedScriptNotifyUrisAnyScriptNotifyUriAllowedScriptNotifyUrisProperty

Windows 8

这些备注仅适用于为 Windows 8 编译的应用,即使在 Windows 8.1 上运行也是如此。

如果使用 Navigate 方法将内容加载到 WebView 控件中,则应用必须使用 AllowedScriptNotifyUris 属性选择接收 ScriptNotify 事件,该属性包含可以触发 ScriptNotify 的 URI 列表。 如果使用 NavigateToString 加载内容,应用程序将接收 ScriptNotify 事件,而无需选择加入。 将 AllowedScriptNotifyUris 属性设置为 AnyScriptNotifyUri 属性返回的值,以指示任何页面都可以对此 WebView 控件触发 ScriptNotify 事件。

适用于

另请参阅