다음을 통해 공유


WebViewControl.AddInitializeScript(String) 메서드

정의

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 중)전에 앱에서 스크립트를 제공하는 방법을 제공합니다.

적용 대상