Chromium / CefSharp触摸事件未被触发

时间:2018-04-08 11:59:57

标签: chromium cefsharp

我在wpf应用程序中有一个模型视图,它使用chrome版本41托管url。 url是html页面,有两个文本输入,每个文本输入都有一个指令(角度1.5),用于绑定' touchstart'事件到每个输入。 当我打开镀铬的Url(没有铬包装)时,我可以看到触摸事件正在工作,当我在chrome下打开url时触摸事件没有被触发。

之前有没有人见过这个问题?它可能与铬版本有关吗?

我的xaml:

    <Window x:Class="CefSharpTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:CefSharpTest"
            xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <cefSharp:ChromiumWebBrowser x:Name="MyBrowser" Address="http://localhost:9090/test.html"></cefSharp:ChromiumWebBrowser>
        </Grid>
    </Window>

我的xaml代码:

using System.Windows;
    using CefSharp;

    namespace CefSharpTest
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                MyBrowser.FrameLoadEnd += MyBrowser_FrameLoadEnd;
            }

            private void MyBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
            {
                MyBrowser.ShowDevTools();
            }
        }
    }

我的HTML:

<html>
    <head>
        <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
    </head>
    <body>
        <script>
            $(document).ready(function(){
                $("#txtTest").on("touchstart", function(e){
                    console.log("touch");
                });
                $("#txtTest").on("keydown", function(e){
                    console.log("key down");
                });
            });
        </script>
        <input id="txtTest" type="text" width="250px" height="250px" />
    </body>
</html>

谢谢

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

on chromium我注册了TouchDown事件,在触地事件中我执行了异步脚本,它将位置(x,y)相对于浏览器发送到客户端。 在javascript函数中,我使用了元素 document.elementFromPoint(x, y);如果元素是输入的:文字我正在触摸一个触摸事件。