问题标签 [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.
javascript - 点击重新加载选项卡后未注册的 Blazor 网页
我刚刚开始使用 CEF4Delphi。我在页面控件的选项卡上有一个铬窗口。网页上的元素附加了 javascript 挂钩,这些挂钩注册点击并触发原生 delphi 代码。这一切都在一个网页上正常工作。我可以切换标签并继续点击网页并接收点击事件。
但是,当加载不同的网页时,会出现一些奇怪的行为。第一次加载选项卡时,点击会被很好地注册。切换选项卡时会出现问题。第二次加载选项卡时,未注册任何点击。
第二个网页是由 blazor 创建的,这与第一个不同,但我不确定为什么会影响它。
我已经使用 Google.com 进行了测试,它在那里也可以正常工作。
在加载选项卡时运行。
delphi 代码被触发
正在执行的 Javascript
接收铬消息并增加计数。
似乎没有办法调试 javascript 是否正在运行。每次页面加载时肯定会运行 ExecuteJavaScript 函数。我想知道是否与导致此问题的网页的 blazor 方面有关,或者是否有任何方法可以调试该问题。
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 标志?
delphi - 如何使用 CEF4Delphi 在 Chromium 中设置自定义 cookie 数据位置
在他们的包 Chromium 49.0.2623.110 OldCEF4Delphi 的旧版本中,有一个功能可以在磁盘上设置 cookie 的自定义位置LCookieManager.SetStoragePath(FCookiePath,False,nil);
但是在最新的 CEF4Delphi 中,这个函数不见了,而且全局属性cookie也消失了,所以有可能吗,它是否由于某种原因被弃用了?
delphi - DCEF4 虚拟键盘未显示
我正在使用来自https://github.com/salvadordf/CEF4Delphi的 CEF4Delphi 我正在编辑 PopupBrowser2 示例。有 Chromium1 组件。我添加了事件,应该在请求键盘时通知:
可悲的是,当示例加载谷歌页面时,我点击搜索编辑框并且没有调用事件。如何使事件被调用?
html - 如何使用 CEF4Delphi 播放直播 YouTube 视频?
我想学习 CEF4Delphi 组件,但遇到了一个问题。CEF4Delphi 不会播放 YouTube 网站上的所有视频。普通视频正常播放,但没有直播。请我帮助解决这个问题。(使用:Delphi - Rad Studio 10.1 Berlin)。我为英语道歉。我用机器翻译谷歌。
.
delphi - 如何防止 Chromium 写入控制台?
我正在制作一个非常简单的 Delphi控制台应用程序 ( ),主窗体上{$APPTYPE CONSOLE}
有一个。TChromiumWindow
该应用程序的目的是检索网页、处理 HTML 并将一些 JSON 输出到控制台。由于网页的性质,这不能使用普通的 HTTP 请求来完成,这也需要运行一些 javascript。
一切都按预期工作,除了一个问题。chromium 组件也会向控制台输出一些错误消息,这使我的 JSON 无效!例如,我总是在启动时收到以下两条错误消息:
当然,最好的解决方案是首先不收到任何错误消息,但由于几个原因(主要与公司遗留代码有关),我不能例如禁用单进程模式。
所以下一个最好的办法是防止这些错误消息被打印到控制台。我试过设置
但这没有帮助。使用指定日志文件GlobalCEFApp.LogFile
也无济于事。
那么我怎样才能完全阻止 Chromium 组件写入控制台呢?
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 是应用程序名称。
谢谢你。
delphi - 如何在没有所有浏览器历史记录的情况下保持登录浏览器 CEF4Delphi?
在 CEF4Delphi 中,可以使用
多亏了这一点,人们可以保持嵌入浏览器的登录状态,例如邮件。不幸的是,这个解决方案保存了浏览器的整个缓存,包括附件等,这使得缓存文件夹在一段时间后变得非常大。在以前的版本 (CEF3) 中,可以选择仅管理占用磁盘很少的组件:
但我还没有找到 CEF4 的类似解决方案,而命令
根本不会在创建的文件夹中保存任何信息。
有没有什么方法可以只保留日志而不保存整个缓存?或者可能是一些我还没有弄清楚的哲学,例如删除一些带有保存缓存的特定文件夹?
注意:我的 CEF4Delphi 版本使用 CEF 86.0.21,其中包括 Chromium 86.0.4240.183;我正在使用 TChromium 组件。
delphi - Delphi 从 THTTPRIO 获取 cookie
我有一个具有登录方法的 SOAP Web 服务,目前在我调用它之后,网站被 TWebBrowser 控件打开并使用来自 Web 服务的会话 cookie。但现在我尝试迁移到 CEF4DELPHI 而不是 TWebBrowser。我试图让 cookie 结束,InternetGetCookie
但我总是得到错误 259 (ERROR_NO_MORE_ITEMS)。问题还在于 cookie 名称可能会有所不同,所以我并不总是知道 cookie 名称。如何从特定域获取所有 cookie,或者是否可以获得完整的响应标头?我只在发送请求之前找到一个钩子。
delphi - Google Oauth2 的 invalid_grant 错误问题
大家干杯,我们一直在深入阅读关于从谷歌交换 access_token 的谷歌文档,以便我们的(delphi)桌面应用程序从服务器端与谷歌进行 SSO。这是我们首先发送的有效载荷,如下所示:
通常在此之后它会重定向我登录到我们的测试用户,然后根据文档我们向端点令牌发送 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,在操场中我们插入了代码,但仍然得到相同的缺少代码的错误验证者。
多谢你们