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] 索引標籤上執行此動作,此清單中的 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 編譯的應用程式不支援AllowedScriptNotifyUrisAnyScriptNotifyUris、AnyScriptNotifyUri和 AllowedScriptNotifyUrisProperty

Windows 8

這些備註僅適用于針對 Windows 8 編譯的應用程式,即使在Windows 8.1上執行也一致。

如果使用Navigate方法將內容載入WebView控制項中,應用程式必須使用AllowedScriptNotifyUris 屬性加入宣告接收 ScriptNotify事件,該屬性具有可引發 ScriptNotify 的 URI 清單。 如果使用 NavigateToString載入內容,應用程式將會在沒有加入宣告的情況下收到 ScriptNotify 事件。 將 AllowedScriptNotifyUris 屬性設定為 AnyScriptNotifyUri 屬性傳回的值,以指出任何頁面都可以將 ScriptNotify 事件引發至此 WebView 控制項。

適用於

另請參閱