发布日期 2022年01月14日

DotNetBrowser 2.11

更新内容

Chromium 96

Chromium 已升级至 96.0.4664.110 版本。

此 Chromium 版本包含 5 个重要修复,因此我们强烈建议您升级至该版本。

拦截触摸事件

现在可以使用以下处理程序来处理触摸事件:Touch.Started.HandlerTouch.Moved.HandlerTouch.Canceled.HandlerTouch.Ended.Handler。请参考下面的示例:

private void Subscribe(IBrowser browser)
{
    // 订阅触摸开始事件
    browser.Touch.Started.Handler = new Handler<ITouchEventArgs, InputEventResponse>(e =>
    {
        ITouchPoint point = e.TouchPoints.First(p => p.TouchState == TouchState.Started);
        Console.WriteLine($@"Touch {point.Id} started at - 
            ({point.LocationOnWidget.X} : {point.LocationOnWidget.X})");
        return InputEventResponse.Proceed;
    });

    // 订阅触摸移动事件
    browser.Touch.Moved.Handler = new Handler<ITouchEventArgs, InputEventResponse>(e =>
    {
        ITouchPoint point = e.TouchPoints.First(p => p.TouchState == TouchState.Moved);
        Console.WriteLine($@"Touch {point.Id} moved to - 
            ({point.LocationOnWidget.X} : {point.LocationOnWidget.X})");
        return InputEventResponse.Proceed;
    });

    // 订阅触摸取消事件
     browser.Touch.Canceled.Handler = new Handler<ITouchEventArgs, InputEventResponse>(e =>
    {
        ITouchPoint point = e.TouchPoints.First(p => p.TouchState == TouchState.Canceled);
        Console.WriteLine($@"Touch {point.Id} canceled at - 
            ({point.LocationOnWidget.X} : {point.LocationOnWidget.X})");
        return InputEventResponse.Proceed;
    });

    // 订阅触摸结束事件
    browser.Touch.Ended.Handler = new Handler<ITouchEventArgs, InputEventResponse>(e =>
    {
        ITouchPoint point = e.TouchPoints.First(p => p.TouchState == TouchState.Ended);
        Console.WriteLine($@"Touch {point.Id} ended at - 
            ({point.LocationOnWidget.X} : {point.LocationOnWidget.X})");
        return InputEventResponse.Proceed;
    });
}

模拟触摸事件

触摸事件可以通过使用 browser.Touch.Startedbrowser.Touch.Movedbrowser.Touch.Ended 输入事件来模拟:

private void SimulateTouches(IBrowser browser)
{
    browser.Focus();

    // 在位置 (10, 10) 开始 ID 为 0 的触摸
    browser.Touch.Started.Raise(
        new TouchStartedEventArgs(
            new TouchPoint(0, TouchState.Started, new Point(10, 10))));
    Thread.Sleep(500);
    // 将 ID 为 0 的触摸点沿 x 轴移动 5 个像素 
    browser.Touch.Moved.Raise(
        new TouchMovedEventArgs(
            new TouchPoint(0, TouchState.Moved, new Point(15, 10))));
    Thread.Sleep(500);
    // 在位置 (15, 10) 结束 ID 为 0 的触摸  
    browser.Touch.Ended.Raise(
        new TouchEndedEventArgs(
            new TouchPoint(0, TouchState.Ended, new Point(15, 10))));
    Thread.Sleep(500);

    // 在位置 (10, 10) 开始 ID 为 1 的触摸
    browser.Touch.Started.Raise(
        new TouchStartedEventArgs(
            new TouchPoint(1, TouchState.Started, new Point(10, 10))));
    Thread.Sleep(500);
    // 将 ID 为 1 的触摸点沿 x 轴移动 5 个像素 
    browser.Touch.Moved.Raise(
        new TouchMovedEventArgs(
            new TouchPoint(1, TouchState.Moved, new Point(15, 10))));
    Thread.Sleep(500);
    // 在位置 (10, 10) 取消 ID 为 1 的触摸
    browser.Touch.Canceled.Raise(
        new TouchCanceledEventArgs(
            new TouchPoint(1, TouchState.Canceled, new Point(10, 10))));
    Thread.Sleep(500);
}

System.Guid

JS-.NET 桥接功能已经扩展。现在您可以将 System.Guid 结构注入到 JavaScript 中,并从 JavaScript 中将其作为对象获取。

DOM 图像元素

DOM API 已经扩展了 IImageElement 接口。它允许从 IMG 标签中获取图像内容:

IImageElement element = document.GetElementByTagName("img") as IImageElement;
Bitmap contents = element.Contents;

改进

  • 添加了对 VS 2022 VSIX 包的兼容性。

修复的问题

  • AlertHandler 导致的整个应用程序冻结问题。

申请 30 天免费试用
下载 DotNetBrowser 2.11 (.NET Framework)
下载 DotNetBrowser 2.11 (.NET Core)

Go Top