WebView.ScriptNotify Evento

Definición

Se produce cuando el contenido incluido en el control WebView pasa una cadena a la aplicación mediante 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"/>

Tipo de evento

Ejemplos

En el ejemplo de código siguiente se muestra el uso del evento ScriptNotify en aplicaciones compiladas para Windows 8. A partir de Windows 8.1, omita las líneas relacionadas con 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.
}

Comentarios

Una página HTML hospedada puede desencadenar el evento ScriptNotify en la aplicación para UWP cuando la página llama a window.external.notify y pasa un parámetro de cadena.

Nota:

Dado que el código externo inicia este evento, debe tener cuidado con lo que ha colocado en el controlador de eventos. Para evitar que los scripts malintencionados aprovechen este evento, asegúrese de habilitarlo solo para URI de confianza, como se describe a continuación.

Windows 8.1

Para permitir que una página web externa active el evento ScriptNotify al llamar a window.external.notify, debe incluir el URI de la página en la sección ApplicationContentUriRules del manifiesto de la aplicación. (Puede hacerlo en Visual Studio en la pestaña URI de contenido del diseñador Package.appxmanifest ). Los URI de esta lista deben usar HTTPS y pueden contener caracteres comodín de subdominio (por ejemplo, "https://.microsoft.com"), pero no pueden contener caracteres comodín de dominio (por ejemplo, "https://.com" y "https://."). El requisito del manifiesto no se aplica al contenido que se origina en el paquete de la aplicación, que usa un URI ms-local-stream:// o se carga mediante NavigateToString.

Nota:

Si tiene más de un subdominio, debe usar un carácter comodín para cada subdominio. Por ejemplo, "https://*.microsoft.com" coincide con "https:// any.microsoft.com", pero no con "https:// this". any.microsoft.com."

Estos cambios no afectan a las aplicaciones compiladas para Windows 8, incluso cuando se ejecutan en Windows 8.1.

AllowedScriptNotifyUris, AnyScriptNotifyUri y AllowedScriptNotifyUrisProperty no se admiten en las aplicaciones compiladas para Windows 8.1.

Windows 8

Estos comentarios solo se aplican a las aplicaciones compiladas para Windows 8, incluso cuando se ejecutan en Windows 8.1.

Si el contenido se carga en el control WebView mediante el método Navigate , la aplicación debe optar por recibir eventos ScriptNotify mediante la propiedad AllowedScriptNotifyUris , que tiene la lista de URI que pueden desencadenar ScriptNotify. Si el contenido se carga mediante NavigateToString, la aplicación recibirá eventos ScriptNotify sin la participación. Establezca la propiedad AllowedScriptNotifyUris en el valor devuelto por la propiedad AnyScriptNotifyUri para indicar que cualquier página puede desencadenar eventos ScriptNotify en este control WebView .

Se aplica a

Consulte también