簡體   English   中英

需要在webview Win 10 UWP中獲取鼠標事件

[英]Need to get mouse events inside webview Win 10 UWP

我正在創建一個win 10 UWP應用程序。

<Grid>
<WebView x:Name="WebViewElm"/>
</Grid>

我在其中添加了一個webview,我需要右鍵單擊鼠標並拖動webview元素的drop事件。 但現在它正在為瀏覽器拍攝事件。 我如何處理webview中的輸入事件

如何將元素從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”ScriptNotify =“WebViewWithJSInjection_ScriptNotify”屬性添加到WebView和C#事件中

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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM