WebViewControl.AddInitializeScript(String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在ContentLoading之後,但在頁面上執行任何其他腳本之前,將腳本插入WebViewControl中。
public:
virtual void AddInitializeScript(Platform::String ^ script) = AddInitializeScript;
void AddInitializeScript(winrt::hstring const& script);
public void AddInitializeScript(string script);
function addInitializeScript(script)
Public Sub AddInitializeScript (script As String)
參數
- script
-
String
Platform::String
winrt::hstring
實作
M:Windows.Web.UI.IWebViewControl2.AddInitializeScript(System.String)
M:Windows.Web.UI.IWebViewControl2.AddInitializeScript(Platform::String)
M:Windows.Web.UI.IWebViewControl2.AddInitializeScript(winrt::hstring)
Windows 需求
裝置系列 |
Windows 10, version 1809 (已於 10.0.17763.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v7.0 引進)
|
範例
下列程式碼是頁面載入時腳本插入的 C# 範例:
WebViewControl webViewControl;
// Replace the window.external with a custom object that does postMessage. The app
// script uses ScriptNotify and InvokeScriptAsync to implement PostMessage and invoke
// a messageReceived handler.
String script = @"var realExternal = window.external;
var customExternal = {
postMessage: (message) => { realExternal.notify('PostMessage: ' + message); },
messageReceived: null,
};
window.external = customExternal;";
void ScriptNotifyCallback(WebViewControl sender, WebViewControlScriptNotifyEventArgs args)
{
String response = GetResponseForPostFromWebView(args.value);
sender.InvokeScriptAsync("eval", $"window.external.messageReceived({response});");
}
webViewControl.ScriptNotify += ScriptNotifyCallback;
webViewControl.AddInitializeScript(script);
webViewControl.Navigate(new Uri("http://mydomain.com"));
使用 InvokeScriptAsync,應用程式可以將腳本插入 WebViewControl,以提供額外的功能或改變頁面。 不過,InvokeScriptAsync 無法保證腳本執行的時間,而且如果應用程式在 引發 DOMContentLoaded 之前呼叫它,腳本就會被插入上一頁的風險。 此範例提供一種方式,讓應用程式在流覽 (或 NavigationStarting) 期間提供腳本,在頁面執行任何腳本之前執行。