问题标签 [cef4delphi]

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 投票
0 回答
139 浏览

javascript - 点击重新加载选项卡后未注册的 Blazor 网页

我刚刚开始使用 CEF4Delphi。我在页面控件的选项卡上有一个铬窗口。网页上的元素附加了 javascript 挂钩,这些挂钩注册点击并触发原生 delphi 代码。这一切都在一个网页上正常工作。我可以切换标签并继续点击网页并接收点击事件。

但是,当加载不同的网页时,会出现一些奇怪的行为。第一次加载选项卡时,点击会被很好地注册。切换选项卡时会出现问题。第二次加载选项卡时,未注册任何点击。

第二个网页是由 blazor 创建的,这与第一个不同,但我不确定为什么会影响它。

我已经使用 Google.com 进行了测试,它在那里也可以正常工作。

在加载选项卡时运行。

delphi 代码被触发

正在执行的 Javascript

接收铬消息并增加计数。

似乎没有办法调试 javascript 是否正在运行。每次页面加载时肯定会运行 ExecuteJavaScript 函数。我想知道是否与导致此问题的网页的 blazor 方面有关,或者是否有任何方法可以调试该问题。

0 投票
1 回答
204 浏览

cef4delphi - 如何在 CEF4DELPHI 中设置“允许文件访问来自文件”?

我正在尝试创建一个加载本地文件夹中的 html 页面的程序,并且该页面实现了一些加载本地 pdf 文件的 javascript 资源(例如:pdf.js)。

每次我尝试运行程序时都会收到此错误:“Fetch API 无法加载文件....不支持 URL 方案“文件”” 本地 html 文件已加载,但 javascript 无法加载 pdf。

我知道有 --allow-file-access-from-files 标志,但我找不到在 Cef4delphi 中设置此标志的方法。

如何在 CEF4DELPHI 上设置 --allow-file-access-from-files 标志?

0 投票
1 回答
513 浏览

delphi - 如何使用 CEF4Delphi 在 Chromium 中设置自定义 cookie 数据位置

在他们的包 Chromium 49.0.2623.110 OldCEF4Delphi 的旧版本中,有一个功能可以在磁盘上设置 cookie 的自定义位置LCookieManager.SetStoragePath(FCookiePath,False,nil);

但是在最新的 CEF4Delphi 中,这个函数不见了,而且全局属性cookie也消失了,所以有可能吗,它是否由于某种原因被弃用了?

0 投票
1 回答
273 浏览

delphi - DCEF4 虚拟键盘未显示

我正在使用来自https://github.com/salvadordf/CEF4Delphi的 CEF4Delphi 我正在编辑 PopupBrowser2 示例。有 Chromium1 组件。我添加了事件,应该在请求键盘时通知:

可悲的是,当示例加载谷歌页面时,我点击搜索编辑框并且没有调用事件。如何使事件被调用?

0 投票
1 回答
441 浏览

html - 如何使用 CEF4Delphi 播放直播 YouTube 视频?

我想学习 CEF4Delphi 组件,但遇到了一个问题。CEF4Delphi 不会播放 YouTube 网站上的所有视频。普通视频正常播放,但没有直播。请我帮助解决这个问题。(使用:Delphi - Rad Studio 10.1 Berlin)。我为英语道歉。我用机器翻译谷歌。

.

附上截图

0 投票
1 回答
292 浏览

delphi - 如何防止 Chromium 写入控制台?

我正在制作一个非常简单的 Delphi控制台应用程序 ( ),主窗体上{$APPTYPE CONSOLE}有一个。TChromiumWindow该应用程序的目的是检索网页、处理 HTML 并将一些 JSON 输出到控制台。由于网页的性质,这不能使用普通的 HTTP 请求来完成,这也需要运行一些 javascript。

一切都按预期工作,除了一个问题。chromium 组件也会向控制台输出一些错误消息,这使我的 JSON 无效!例如,我总是在启动时收到以下两条错误消息:

当然,最好的解决方案是首先不收到任何错误消息,但由于几个原因(主要与公司遗留代码有关),我不能例如禁用单进程模式。

所以下一个最好的办法是防止这些错误消息被打印到控制台。我试过设置

但这没有帮助。使用指定日志文件GlobalCEFApp.LogFile也无济于事。

那么我怎样才能完全阻止 Chromium 组件写入控制台呢?

0 投票
1 回答
1140 浏览

javascript - 如何使用 Cef4Delphi 从 JavaScript 调用 Delphi 函数

我是德尔福的初学者。目前使用 Delphi Berlin 版本。

我正在尝试从 JavaScript 调用 Delphi 函数/方法。例如,我想在单击带有附加数据属性的 html 按钮时打开一个新的 Delphi 表单。

代码

单击按钮时,将打开一个新的 Delphi [第二种形式],它将在 TLabel 上显示按钮的数据属性。

[更新 - 2020 年 12 月 10 日]

我尝试在 JSExtension 演示的帮助下创建应用程序。我尝试添加 javascript 点击事件,但 html 上的点击事件未触发且第二个表单未加载。这是一些代码

HTML [jsExtensionClickEvent.html]

德尔福

扩展处理程序类 [uExtensionHandler.pas]

主窗体 [uMainForm.pas]

第二种形式 [uSecondForm.pas]

日志文件的内容

单击“调试事件日志”下方的按钮时。Cef4DelphiJsExtension.exe 是应用程序名称。

谢谢你。

0 投票
1 回答
530 浏览

delphi - 如何在没有所有浏览器历史记录的情况下保持登录浏览器 CEF4Delphi?

在 CEF4Delphi 中,可以使用

多亏了这一点,人们可以保持嵌入浏览器的登录状态,例如邮件。不幸的是,这个解决方案保存了浏览器的整个缓存,包括附件等,这使得缓存文件夹在一段时间后变得非常大。在以前的版本 (CEF3) 中,可以选择仅管理占用磁盘很少的组件:

但我还没有找到 CEF4 的类似解决方案,而命令

根本不会在创建的文件夹中保存任何信息。

有没有什么方法可以只保留日志而不保存整个缓存?或者可能是一些我还没有弄清楚的哲学,例如删除一些带有保存缓存的特定文件夹?

注意:我的 CEF4Delphi 版本使用 CEF 86.0.21,其中包括 Chromium 86.0.4240.183;我正在使用 TChromium 组件。

0 投票
0 回答
139 浏览

delphi - Delphi 从 THTTPRIO 获取 cookie

我有一个具有登录方法的 SOAP Web 服务,目前在我调用它之后,网站被 TWebBrowser 控件打开并使用来自 Web 服务的会话 cookie。但现在我尝试迁移到 CEF4DELPHI 而不是 TWebBrowser。我试图让 cookie 结束,InternetGetCookie但我总是得到错误 259 (ERROR_NO_MORE_ITEMS)。问题还在于 cookie 名称可能会有所不同,所以我并不总是知道 cookie 名称。如何从特定域获取所有 cookie,或者是否可以获得完整的响应标头?我只在发送请求之前找到一个钩子。

0 投票
2 回答
174 浏览

delphi - Google Oauth2 的 invalid_grant 错误问题

大家干杯,我们一直在深入阅读关于从谷歌交换 access_token 的谷歌文档,以便我们的(delphi)桌面应用程序从服务器端与谷歌进行 SSO。这是我们首先发送的有效载荷,如下所示:

https://accounts.google.com/o/oauth2/v2/auth?client_id=1000217514248-t1lojs6f8ed7l9ocrpbm98leahtum8n1.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&state=E1DF2FBA-0 4D69-B594-5EB8F7828AF7&scope=openid+profile&include_granted_scopes=true&code_challenge=C832DA50-E55A-499D-89B8-493BB4123C94&login_hint=test@Speelkriebel.be

通常在此之后它会重定向我登录到我们的测试用户,然后根据文档我们向端点令牌发送 POST 请求以获取 access_token 和 refresh_token ...:'https://oauth2.googleapis .com/token 使用以下参数,生成“代码”,我们也将其发送如下:

回应总是

我们也尝试发送客户端秘密 ID,这与我们的 code_challenge 有关系吗?端点 url 和初始 url 好吗?我们缺少什么?我们使用 CEF4Delphi 作为“类似浏览器的体验,以便用户输入他们的谷歌凭据。我们一直在阅读:https ://developers.google.com/identity/protocols/oauth2/web-server#offline 我们是还尝试了操场:https ://developers.google.com/oauthplayground/ 我们在生成“代码”的 chrome 中发送初始 url,在操场中我们插入了代码,但仍然得到相同的缺少代码的错误验证者。

多谢你们