Beispiel zum Ziehen eines Elements von XAML nach WebView. Es ist keine vollständige Lösung, aber möglicherweise hilfreich für Sie.
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# -Code:
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;
}
Das einzige, was Sie brauchen, ist zu überprüfen ist Maus über Absatz-Element in Ihrem JavaScript-Code.
Wenn Sie Ereignisse innerhalb JavaScript-Code überprüfen, die Sie hinzufügen können NavigationCompleted = "WebViewElm_NavigationCompleted" und ScriptNotify = "WebViewWithJSInjection_ScriptNotify" auf Ihre WebView und C# Ereignisse Attribute
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
}
In JavaScript-Funktionen hinzufügen:
function LoadingFinished()
{
document.getElementById('txtClick').addEventListener("mousedown", callExternal);
}
function callExternal()
{
window.external.notify(document.getElementById("txtClick").innerHTML);
}
WebView unterstützt die meisten Benutzereingabeereignisse, die von UIElement übernommen wurden, z. B. KeyDown, KeyUp und PointerPressed, nicht. Eine häufige Problemumgehung besteht darin, [InvokeScriptAsync] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webview.invokeskriptasync.aspx) mit der JavaScript ** -Evaluierung zu verwenden ** Funktion zur Verwendung der HTML-Event-Handler und Verwendung von ** window.external.notify ** vom HTML-Event-Handler zur Benachrichtigung der Anwendung mit [WebView.scriptNotify] (https://msdn.microsoft.com/de-de us/library/windows/apps/windows.ui.xaml.controls.webview.scriptnotify.aspx). –
Ich kann später versuchen, weitere Informationen hinzuzufügen, aber hier ist ein schönes Beispiel: [Wie man JavaScript-Warnungen in WebView in universellen Windows-Apps abfängt] (https://code.msdn.microsoft.com/How-to-intercept-854d33da) –