次の方法で共有


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 中) の前に、アプリでスクリプトを提供する方法を提供します。

適用対象