问题标签 [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.
delphi - 如何将 TEdgebrowser 弹出窗口重定向到我自己的表单?
通过 TEdgeBrowser.OnNewWindowRequested 事件,我可以清楚地知道即将打开一个新窗口,但是如何使用第二个 TEdgeBrowser 组件将输出捕获到我自己的自定义 TForm 中?
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),但我很想知道上述概念是否可以发挥作用。)
delphi - 在 Delphi 中从 TEdgeBrowser 打印
有没有办法从TEdgeBrowser
Delphi 的实现中打印?
在较旧的 TWebBrowser 中,我们使用了以下有效的代码:
但TEdgeBrowser
似乎不支持这一点?
任何想法都被广泛接受。
delphi - Delphi 10.4.1 及更高版本的 TEdgeBrowser:如何捕获 F12 (OpenDevToolsWindow)?
我TEdgeBrowser
在 Delphi 10.4.1 中使用。它工作得很好。
唯一令人烦恼的问题是,当TEdgeBrowser
有焦点时,它会抓取F12并CTRL+SHIFT+C呈现 OpenDevToolsWindow。这很好,除了我想在加载之前更改表单的一些最顶层属性(否则,DevTools 窗口将位于 MainForm 后面)。
有没有办法F12从父 MainForm 中捕获?我已经尝试过 Application 和 MainForm 键捕获,但都无法捕获TEdgeBrowser
键事件(当TEdgeBrowser
有焦点时)。
还有另一种方法来解决这个问题吗?
此外,我可以通过编程方式启动 OpenDevToolsWindow 吗?
delphi - 在 TEdgeBrowser 中禁用安全性
我在 C# 中看到了人们通过更改 CoreWebView2EnvironmentOptions 在 WebView2 中禁用安全性(因此用户不必单击继续出现证书错误)的示例,但我终生无法弄清楚如何做等效使用 Delphi 中的 TEdgeBrowser 组件。有没有人设法在德尔福实现这一目标?
编辑:用 C# 解决方案更新。
delphi - TEdgeBrowser - OnNewWindowRequested - 在另一个 TEdgeBrowser 中打开新窗口
德尔福 10.4.2
我是第一次使用 TEdgeBrowser,并且正在我创建的一个小型演示应用程序中玩一些想法。到目前为止,我已经能够以编程方式导航到网站,登录(填写用户名和密码并单击登录按钮),单击一个按钮(我的案例)以转到另一个页面,然后填写一个编辑字段和一个用于查找特定案例的组合框。到目前为止一切都很好。现在该案例可用,我可以选择单击“历史记录”或“服务信息”。我单击“历史记录”按钮并希望在另一个 TEdgeBrowser 组件中打开新窗口。这是我用来尝试执行此操作的代码,但它不起作用。
请注意,我在 FormShow 事件中有以下内容。
注意:我的主浏览器是调用 EdgeBrowser
阅读此站点上的其他帖子,我认为这可能与在 TPageControl 的另一个页面上有一个 TEdgeBrowser 有关,所以我将其移至主窗体,但它仍然无法正常工作。
如果我在 EdgeBrowserNewWindowRequested 事件中没有任何代码,它将打开一个新窗口就好了。有人知道我需要做什么才能让它工作吗?
delphi - TEdgeBrowser - 打开 PDF 文件
德尔福 10.4.2
在过去的几天里,我一直在尝试使用 TEdgeBrowser,所以我对使用这个组件还是很陌生。
我有一个显示 pdf 文档链接的页面。此页面显示在标题为“案例摘要”的新窗口中,而不是默认浏览器中。
当我单击一个链接时,该文件会自动下载到“下载”文件夹中,这很好,然后会显示以下“下载”对话框:
请注意,在上图中,“下载”对话框的“案例摘要”窗口中添加了一个新按钮。如果我单击“打开文件”,PDF 文件会在另一个新窗口中打开,并且这个新窗口会在我的“案例摘要”窗口后面打开。
如果在显示“下载”对话框时移动“案例摘要”窗口(以便可以看到 PDF 文件),则“下载”对话框会消失,打开该对话框的按钮也会消失。
如果单击此下载对话框上的关闭按钮,添加到“案例摘要”窗口的新按钮也将消失,再次访问“下载”对话框的唯一方法是再次单击其中一个 PDF 文件链接。
我有几个问题:
如果在“下载”对话框中单击“打开文件”,是否可以在“案例摘要”窗口前面打开它?
单击“打开文件”(或用户单击对话框上的关闭按钮)时,“下载”对话框消失,这很好,但是添加到“案例摘要”窗口的按钮也消失了。有什么方法可以始终在“案例摘要”表单上显示“下载”按钮(即使下载文件夹中还没有文件,如有必要)?
是否有绕过显示“下载”对话框而只需在新窗口中打开 PDF 文件的方法?
感谢所有花时间帮助解决这些问题的人。
c++builder - 在 C++Builder 11 中使用 ICoreWebView2EnvironmentOptions
我试图在 TEdgeBrowser 中禁用 CORS,并通过使用找到了很多解决方案,ICoreWebView2EnvironmentOptions
因为 TEdgeBrowser 是由 WebView2 实现的。
在Microsoft 的文档中,示例代码似乎用于 Visual C++ 和 C++ Builder 不适用:
这是我在 C++ Builder 11 中尝试过的代码:
它会失败m_WV2EnvOpt->put_AdditionalBrowserArguments()
。
我不知道,也许我走错了路。有人能帮我吗?
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,最好是最新版本。