我在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>
谢谢
答案 0 :(得分:0)
我找到了解决方案:
on chromium我注册了TouchDown事件,在触地事件中我执行了异步脚本,它将位置(x,y)相对于浏览器发送到客户端。
在javascript函数中,我使用了元素
document.elementFromPoint(x, y);
如果元素是输入的:文字我正在触摸一个触摸事件。