要素をXAMLからWebViewにドラッグする方法のサンプル。それは完全な解決策ではありませんが、あなたに役立つかもしれません。
XAML:
<StackPanel Orientation="Vertical" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<WebView DefaultBackgroundColor="LightGray" Source="ms-appx-web:///HTMLPage1.html" PointerReleased="WebViewElm_PointerReleased" Width="300" Height="300" x:Name="WebViewElm"></WebView>
<TextBlock x:Name="txtZiel" DragOver="txtZiel_DragOver" PointerReleased="txtZiel_PointerReleased" >2</TextBlock>
</StackPanel>
C#コード:
private async void WebViewElm_PointerReleased(object sender, PointerRoutedEventArgs e)
{
await WebViewElm.InvokeScriptAsync("callFromExternal", new string[] { txtZiel.Text });
}
private async void WebViewElm_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
await WebViewElm.InvokeScriptAsync("LoadingFinished", null);
}
HTML:
<body>
<p id="txtClick">1</p>
</body>
はJavaScript:
function callFromExternal(somedrag) {
document.getElementById("txtClick").innerHTML = somedrag;
}
必要なのは、JavaScriptコードの段落要素の上にマウスを置くだけです。
あなたが追加することができますJavaScriptコード内のイベントをチェックしたい場合はNavigationCompleted = "WebViewElm_NavigationCompleted" とあなたのWebViewとC#のイベントに属性ScriptNotify = "WebViewWithJSInjection_ScriptNotify"
private async void WebViewElm_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
await WebViewElm.InvokeScriptAsync("LoadingFinished", null);
}
private void WebViewWithJSInjection_ScriptNotify(object sender, NotifyEventArgs e)
{
// here in e.Value you can get string with document.getElementById("txtClick").innerHTML
}
JavaScriptが機能を追加して:
function LoadingFinished()
{
document.getElementById('txtClick').addEventListener("mousedown", callExternal);
}
function callExternal()
{
window.external.notify(document.getElementById("txtClick").innerHTML);
}
WebViewでは、KeyDown、KeyUp、PointerPressedなど、UIElementから継承されたほとんどのユーザー入力イベントはサポートされていません。一般的な回避策は、[InvokeScriptAsync](https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webview.invokescriptasync.aspx)をJavaScript ** eval ** HTMLイベントハンドラを使用し、HTMLイベントハンドラから** window.external.notify **を使用して[WebView.ScriptNotify]を使用してアプリケーションに通知する機能(https://msdn.microsoft.com/en-私たち/ライブラリ/ windows/apps/windows.ui.xaml.controls.webview.scriptnotify.aspx)。 –
私は後でいくつかの情報を追加しようとすることができますが、ここで良い例です:[ユニバーサルWindowsアプリケーションでWebViewのJavaScriptアラートを傍受する方法](https://code.msdn.microsoft.com/How-to-intercept-854d33da ) –