发布日期 2022年04月07日

DotNetBrowser 2.13

更新内容

Password Manager API

Chromium 具有内置功能,用于在用户提交带有用户名和密码的网页表单后存储输入的凭据。在这种情况下,将使用 SavePasswordHandlerUpdatePasswordHandler 处理程序来决定是否保存凭据,或者如果凭据已保存则更新它们。

要以编程方式保存或更新用户凭据,请使用 SavePasswordHandlerUpdatePasswordHandler,如下所示:

Browser.Passwords.SavePasswordHandler = 
    new Handler<SavePasswordParameters, SavePasswordResponse>(p =>
    {
        return SavePasswordResponse.Save;
    });

Browser.Passwords.UpdatePasswordHandler = 
    new Handler<UpdatePasswordParameters, UpdatePasswordResponse>(p =>
    {
        return UpdatePasswordResponse.Update;
    });

如果您保存了这些凭据,下次加载同样的表单并尝试填写时,将显示自动填充弹出窗口:

密码自动填充

要访问和管理已保存的凭据,请使用 IPasswordStore

IReadOnlyList<PasswordRecord> allPasswords = 
    Engine.Profiles.Default.PasswordStore.All;
IReadOnlyList<PasswordRecord> savedPasswords = 
    Engine.Profiles.Default.PasswordStore.AllSaved;
IReadOnlyList<PasswordRecord> neverSavedPasswords = 
    Engine.Profiles.Default.PasswordStore.AllNeverSaved;

IPasswordStore 中保存的条目可以通过 URL 移除:

PasswordStore.RemoveByUrl(url);

要清除所有密码,请使用以下方法:

PasswordStore.Clear();

Chromium 100

Chromium 引擎已升级至 100.0.4896.60 版本。

此 Chromium 版本包含许多安全修复,所以我们强烈建议您升级至该版本。

扩展数组和集合支持

此版本为 JS-.NET 桥接带来了对集合的扩展支持。

新增了 IJsArrayIJsSetIJsMapIJsArrayBuffer 接口,以简化从 .NET 端与 JavaScript 集合的交互工作。

此外,注入的 .NET 集合扩展了一个方法,该方法可以从 JavaScript 调用以创建集合的纯 JavaScript 副本:

  • IEnumerable<T> 扩展了 ToJsArray()ToJsSet() 方法;
  • IDictionary<TKey,TValue>IReadOnlyDictionary<TKey,TValue> 扩展了 ToJsMap() 方法;
  • byte[] 扩展了 ToJsArrayBuffer() 方法。

示例

Dictionary<int, string> dictionary = 
    new Dictionary<int, string> {{1, "test1"}, {2, "test2"}};
List<string> collection = new List<string> {"test1", "test2", "test3", "test1"};
byte[] bytes = {0xAA, 0xBB, 0xCC, 0xDD};

IJsObject document = Browser.MainFrame.ExecuteJavaScript<IJsObject>("document").Result;
document.Properties["dotNetDictionary"] = dictionary;
document.Properties["dotNetCollection"] = collection;
document.Properties["dotNetByteArray"] = bytes;

IJsMap resultMap = 
    Browser.MainFrame.ExecuteJavaScript("document.dotNetDictionary.ToJsMap()").Result 
        as IJsMap;
IJsSet resultSet = 
    Browser.MainFrame.ExecuteJavaScript("document.dotNetCollection.ToJsSet()").Result 
        as IJsSet;
IJsArray resultArray = 
    Browser.MainFrame.ExecuteJavaScript("document.dotNetCollection.ToJsArray()").Result 
        as IJsArray;
IJsArrayBuffer resultData = 
    Browser.MainFrame.ExecuteJavaScript("document.dotNetByteArray.ToJsArrayBuffer()").Result
        as IJsArrayBuffer;

进程内 DevTools

现在可以在不配置远程调试端口的情况下以编程方式显示和隐藏 DevTools 窗口。

browser.DevTools.Show();

DevTools 将在单独的窗口中显示:

DevTools

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

Go Top