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.
}

注釈

ホストされた HTML ページは、ページが window.external.notify を呼び出し、文字列パラメーターを渡すときに、UWP アプリで ScriptNotify イベントを発生させることができます。

注意

このイベントは外部コードによって開始されるため、イベント ハンドラーに格納する内容には注意する必要があります。 悪意のあるスクリプトがこのイベントを悪用しないようにするには、次に説明するように、信頼できる URI に対してのみ有効にしてください。

Windows 8.1

window.external.notify を呼び出すときに外部 Web ページで ScriptNotify イベントを発生させるには、アプリ マニフェストの ApplicationContentUriRules セクションにページの URI を含める必要があります。 (これは、Visual Studio の Package.appxmanifest デザイナーの [コンテンツ URI] タブで行うことができます)。この一覧の URI は HTTPS を使用する必要があり、サブドメイン ワイルドカード ("https://.microsoft.com" など) を含めることができますが、ドメイン ワイルドカード ("https://.com" や "https://"など) を含めることはできません。 マニフェスト要件は、アプリ パッケージから生成されたコンテンツには適用されず、ms-local-stream:// URI を使うか、NavigateToString を使って読み込まれるかのいずれかです。

注意

サブドメインが複数ある場合は、サブドメインごとに 1 つのワイルドカードを使用する必要があります。 たとえば、"https://*.microsoft.com" は "https:// any.microsoft.com" と一致しますが、"https:// this" とは一致しません。any.microsoft.com

これらの変更は、Windows 8.1で実行されている場合でも、Windows 8 用にコンパイルされたアプリには影響しません。

AllowedScriptNotifyUrisAnyScriptNotifyUriAllowedScriptNotifyUrisProperty は、Windows 8.1用にコンパイルされたアプリではサポートされていません。

Windows 8

これらの解説は、Windows 8.1で実行されている場合でも、Windows 8 用にコンパイルされたアプリにのみ適用されます。

Navigate メソッドを使用してコンテンツが WebView コントロールに読み込まれる場合、アプリは AllowedScriptNotifyUris プロパティを使用して ScriptNotify イベントを受信するようにオプトインする必要があります。このプロパティには、ScriptNotify を実行できる URI の一覧が含まれます。 NavigateToString を使用してコンテンツが読み込まれる場合、アプリケーションはオプトインなしで ScriptNotify イベントを受信します。 AllowedScriptNotifyUris プロパティを AnyScriptNotifyUri プロパティによって返される値に設定して、任意のページがこの WebView コントロールに ScriptNotify イベントを発生できることを示します。

適用対象

こちらもご覧ください