WebView.ScriptNotify 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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 編譯的應用程式不支援AllowedScriptNotifyUris、AnyScriptNotifyUris、AnyScriptNotifyUri和 AllowedScriptNotifyUrisProperty。
Windows 8
這些備註僅適用于針對 Windows 8 編譯的應用程式,即使在Windows 8.1上執行也一致。
如果使用Navigate方法將內容載入WebView控制項中,應用程式必須使用AllowedScriptNotifyUris 屬性加入宣告接收 ScriptNotify事件,該屬性具有可引發 ScriptNotify 的 URI 清單。 如果使用 NavigateToString載入內容,應用程式將會在沒有加入宣告的情況下收到 ScriptNotify 事件。 將 AllowedScriptNotifyUris 屬性設定為 AnyScriptNotifyUri 屬性傳回的值,以指出任何頁面都可以將 ScriptNotify 事件引發至此 WebView 控制項。