【问题标题】:Delphi TChromium : how to toggle between show and hide images with Options.ImageLoadingDelphi TChromium:如何使用 Options.ImageLoading 在显示和隐藏图像之间切换
【发布时间】:2016-05-17 00:58:35
【问题描述】:

我正在使用 TChromium 导航到页面。它具有属性 Options.ImageLoading ,您可以在其中指定是否要显示网站的图像。

问题是它仅适用于在设计时设置的选项。如果我在运行时更改此属性,则无效。这是一个示例代码;我想在这个例子中实现的是打开 test1.com 显示图像和打开 test2.com 隐藏图像。不幸的是,这两个网站都加载了图片,忽略了我设置的选项。

任何想法如何解决这个问题?我希望能够仅显示某些网站的图片。

procedure tform1.button1click(Sender : TObject);
begin
chromium1.options.ImageLoading = STATE_ENABLED;
chromium1.load('www.test1.com');
end;

procedure tform1.button2click(Sender: TObject);
begin
chromium1.options.ImageLoading = STATE_DISABLED;
chromium1.load('www.test2.com');
end;

【问题讨论】:

  • CEF 的浏览器设置不能动态更改。重新创建浏览器/控件应该会有所帮助。
  • @fddima 这是个坏消息 :( 当我使用 TWebbrowser 时,我可以动态地做到这一点......
  • 我不知道什么是 TWebBrowser。因为您无论如何都要重新加载页面 - 重新创建浏览器是最简单的方法,没有任何缺点。只需动态创建控件,您甚至可以通过正确的等待和显示/隐藏窗口来避免闪烁。所以实际上并不是一个坏消息。
  • @fddima 这是因为在我的旧工作流程中,我可以加载没有图像的页面,在其上运行一些脚本并仅在特定点之后激活图像;这将节省大量下载。在这个新的场景中,我需要从一开始就显示图像。无论如何,谢谢你的信息。
  • 与您的帖子完全不同。负载/不负载之间的平衡取决于您。如果有意义,您始终可以使用图像重新创建和重新启动您的事务。您实际上是在询问延迟媒体加载,实际上是什么,afaik,可能但有点棘手/不能保证,但更好的是拥有对 CEF api 的原始访问权限(至少您需要能够提供自己的 CefRequestHandler,我当然也在谈论最新版本,不确定delphi绑定)。

标签: delphi chromium chromium-embedded tchromium


【解决方案1】:

因为@delphirules 实际上询问延迟图像加载,下一个答案是最好的(并且适用于任何基于铬的解决方案)我在这里重新发布part of this answer

您可以将webkit.webprefs.loads_images_automatically 首选项设置为 false 来加载网页,然后将其更改为 true 并加载图片(加载后您无法卸载图片)。

感谢用户amaitland 提供了很好的发现。 :)

【讨论】:

  • 谢谢,这是个好消息。我只是不知道如何在我正在使用的组件中设置它,它是一个 Delphi 绑定...
【解决方案2】:

试试这个:

  • 创建两个 TChromium 实例,一个使用 options.ImageLoading := STATE_ENABLED,另一个使用 options.ImageLoading := STATE_DISABLED

  • 然后,当您想要加载页面时,使第一个页面可见,而另一个不可见,反之亦然。

显然,可能还有更多工作要做,但至少可以避免每次更改时都必须重新创建浏览器。

【讨论】:

  • 感谢您的建议。虽然它并不能真正解决我的问题,但它是一种解决方法。
猜你喜欢
  • 1970-01-01
  • 2016-08-26
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多