问题标签 [tedgebrowser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
222 浏览

delphi - 如何将 TEdgebrowser 弹出窗口重定向到我自己的表单?

通过 TEdgeBrowser.OnNewWindowRequested 事件,我可以清楚地知道即将打开一个新窗口,但是如何使用第二个 TEdgeBrowser 组件将输出捕获到我自己的自定义 TForm 中?

0 投票
0 回答
708 浏览

delphi - 如何使用 Delphi Sydney 10.4.2 和 Edge Webbrowser 组件获取 HTML SOURCE

TEdgeBrowser在 Delphi 10.4.2 中。我想从 HTML 代码中提取基于 RegEx 的字符串。过去,可以使用TWebBrowser(仅使用 IE 11 或更低版本)作为 selectedEngine。

但我的网站不再需要 IE 11+。所以我必须TEdgeBrowser在 Syndey 中使用 Edge-based。我发现这篇文章是通过脚本调用来获取源代码的,但是使用最新的 Edge(来自此处的 Evergreen Standalone ),我总是得到AResultObjectAsJson将是“null”(没有结果是返回)。

我能做些什么来完成我的任务?

0 投票
1 回答
171 浏览

cookies - 从 WebView2 Edge 网站登录中获取 cookie 以进行 WinInet/WinHTTP 爬网

假设我正在使用 WinInet/WinHTTP 来抓取网站。过去,我可以简单地要求用户使用嵌入式 IE 控件或 IE 浏览器登录网站,WinInet 将使用与 IE 浏览器相同的 cookie。现在这将不再是因为 Internet Explorer 变老并很快被删除。

无论出于何种原因,Edge 浏览器不包装/使用 Windows Internet 设置/cookie 存储...有没有人有通过嵌入式 webview2 登录的经验...获取厨师并转移到 WinInet?在这里,您可以使用 WinInet/WinHTTP 在登录状态下抓取网站。

通过嵌入式WebView2控件登录并在发出WinInet HTTP请求之前将所有cookie传输到WinInet是否是一种可行的解决方案?

(我添加了一个 Delphi 特定标签(TEdgeBrowser),但我很想知道上述概念是否可以发挥作用。)

0 投票
0 回答
206 浏览

delphi - 在 Delphi 中从 TEdgeBrowser 打印

有没有办法从TEdgeBrowserDelphi 的实现中打印?

在较旧的 TWebBrowser 中,我们使用了以下有效的代码:

TEdgeBrowser似乎不支持这一点?

任何想法都被广泛接受。

0 投票
3 回答
294 浏览

delphi - Delphi 10.4.1 及更高版本的 TEdgeBrowser:如何捕获 F12 (OpenDevToolsWindow)?

TEdgeBrowser在 Delphi 10.4.1 中使用。它工作得很好。

唯一令人烦恼的问题是,当TEdgeBrowser有焦点时,它会抓取F12CTRL+SHIFT+C呈现 OpenDevToolsWindow。这很好,除了我想在加载之前更改表单的一些最顶层属性(否则,DevTools 窗口将位于 MainForm 后面)。

有没有办法F12从父 MainForm 中捕获?我已经尝试过 Application 和 MainForm 键捕获,但都无法捕获TEdgeBrowser键事件(当TEdgeBrowser有焦点时)。

还有另一种方法来解决这个问题吗?

此外,我可以通过编程方式启动 OpenDevToolsWindow 吗?

0 投票
0 回答
79 浏览

delphi - 在 TEdgeBrowser 中禁用安全性

我在 C# 中看到了人们通过更改 CoreWebView2EnvironmentOptions 在 WebView2 中禁用安全性(因此用户不必单击继续出现证书错误)的示例,但我终生无法弄清楚如何做等效使用 Delphi 中的 TEdgeBrowser 组件。有没有人设法在德尔福实现这一目标?

编辑:用 C# 解决方案更新。

C# 中的另一种解决方法:

0 投票
2 回答
193 浏览

delphi - TEdgeBrowser - OnNewWindowRequested - 在另一个 TEdgeBrowser 中打开新窗口

德尔福 10.4.2

我是第一次使用 TEdgeBrowser,并且正在我创建的一个小型演示应用程序中玩一些想法。到目前为止,我已经能够以编程方式导航到网站,登录(填写用户名和密码并单击登录按钮),单击一个按钮(我的案例)以转到另一个页面,然后填写一个编辑字段和一个用于查找特定案例的组合框。到目前为止一切都很好。现在该案例可用,我可以选择单击“历史记录”或“服务信息”。我单击“历史记录”按钮并希望在另一个 TEdgeBrowser 组件中打开新窗口。这是我用来尝试执行此操作的代码,但它不起作用。

请注意,我在 FormShow 事件中有以下内容。

注意:我的主浏览器是调用 EdgeBrowser

阅读此站点上的其他帖子,我认为这可能与在 TPageControl 的另一个页面上有一个 TEdgeBrowser 有关,所以我将其移至主窗体,但它仍然无法正常工作。

如果我在 EdgeBrowserNewWindowRequested 事件中没有任何代码,它将打开一个新窗口就好了。有人知道我需要做什么才能让它工作吗?

0 投票
0 回答
82 浏览

delphi - TEdgeBrowser - 打开 PDF 文件

德尔福 10.4.2

在过去的几天里,我一直在尝试使用 TEdgeBrowser,所以我对使用这个组件还是很陌生。

我有一个显示 pdf 文档链接的页面。此页面显示在标题为“案例摘要”的新窗口中,而不是默认浏览器中。

PDF 文件列表

当我单击一个链接时,该文件会自动下载到“下载”文件夹中,这很好,然后会显示以下“下载”对话框:

下载

请注意,在上图中,“下载”对话框的“案例摘要”窗口中添加了一个新按钮。如果我单击“打开文件”,PDF 文件会在另一个新窗口中打开,并且这个新窗口会在我的“案例摘要”窗口后面打开。

如果在显示“下载”对话框时移动“案例摘要”窗口(以便可以看到 PDF 文件),则“下载”对话框会消失,打开该对话框的按钮也会消失。

如果单击此下载对话框上的关闭按钮,添加到“案例摘要”窗口的新按钮也将消失,再次访问“下载”对话框的唯一方法是再次单击其中一个 PDF 文件链接。

我有几个问题:

  1. 如果在“下载”对话框中单击“打开文件”,是否可以在“案例摘要”窗口前面打开它?

  2. 单击“打开文件”(或用户单击对话框上的关闭按钮)时,“下载”对话框消失,这很好,但是添加到“案例摘要”窗口的按钮也消失了。有什么方法可以始终在“案例摘要”表单上显示“下载”按钮(即使下载文件夹中还没有文件,如有必要)?

  3. 是否有绕过显示“下载”对话框而只需在新窗口中打开 PDF 文件的方法?

感谢所有花时间帮助解决这些问题的人。

0 投票
1 回答
84 浏览

c++builder - 在 C++Builder 11 中使用 ICoreWebView2EnvironmentOptions

我试图在 TEdgeBrowser 中禁用 CORS,并通过使用找到了很多解决方案,ICoreWebView2EnvironmentOptions因为 TEdgeBrowser 是由 WebView2 实现的。

Microsoft 的文档中,示例代码似乎用于 Visual C++ 和 C++ Builder 不适用:

这是我在 C++ Builder 11 中尝试过的代码:

它会失败m_WV2EnvOpt->put_AdditionalBrowserArguments()

我不知道,也许我走错了路。有人能帮我吗?

0 投票
0 回答
118 浏览

delphi - Delphi 11 TEdgeBrowser webview2 加载缓慢

我正在将应用程序从 TWebBrowser 移植到 TEdgeBrowser。我正在使用来自 Nuget 站点的最新 WebView2Loader,并且在可追溯到 2021 年 1 月的每个版本中,所有版本的 WebView2Loader 都存在相同的一致问题。

TEdgeBrowser 运行良好,但任何页面的首次加载可能需要 14 秒到 24 秒之间的任何时间,通常在 14-18 秒之间。加载第一页后,任何后续页面加载的执行速度都与您在完整浏览器中的预期一样快。

我指定了一个 UserDataFolder 和一个 BrowserExecutableFolder,以及 OnCreateWebViewCompleted、OnNavigationStarting 和 OnNavigationCompleted 事件。

我检查了界面代码中定义的任何错误常量,但返回的唯一错误是“COREWEBVIEW2_WEB_ERROR_STATUS_UNKNOWN”,每次我成功导航到网页时都会发生这种错误。

有没有人对可能导致这种延迟的原因有任何见解?我可以在 Microsft Edge 旁边运行我的嵌入式浏览器,并且 Edge 加载速度按预期快速,但 TEdgeBrowser 总是有初始延迟。

任何帮助将不胜感激。 在此处输入图像描述

您可以在此处找到最新的 webview2 运行时: NuGet Gallery | Microsoft.Web.Webview2 1.0.1072.54

此外,您需要确保已安装 Microsoft Edge,最好是最新版本。