【问题标题】:Why does CefSharp.WebBrowserExtensions.SetZoomLevel affect all instances?为什么 CefSharp.WebBrowserExtensions.SetZoomLevel 会影响所有实例?
【发布时间】:2016-04-25 13:02:36
【问题描述】:

我有一个可以有多个窗口的应用程序,在每个窗口中都有一个自定义的UserControl 承载一个CefSharp.WinForms.ChromiumWebBrowser 控件。

我可以使用CefSharp. WebBrowserExtensions. SetZoomLevel 毫无问题地更改浏览器的缩放级别。

我遇到的唯一问题是,这样做时,所有浏览器实例(在所有单独的窗口中)的缩放级别会发生变化。

为什么会这样?如何预防?我发现对SetZoomLevel 的调用传递给了一个特定的控制实例,但所有其他实例也受到影响,这让我感到惊讶。

P.S.:我正在使用 CEF 3.2454.1344.g2782fb8 (Chromium 45.0.2454.101)。

【问题讨论】:

  • 显然这是由 chrome 设计的,请参阅 here。缩放级别由域链接,即浏览同一域的所有控件实例共享一个共同的缩放级别。由于我使用 Cef 作为 UI,由我自己的服务器提供服务,因此所有页面都位于 http://localhost。有没有人知道如何规避这个“功能”?

标签: c# winforms cefsharp


【解决方案1】:

显然缩放级别是按-域链接的。如果我使用“http://window1.localhost”和“http://window2.localhost”,我可以独立调整缩放级别。

【讨论】:

  • 有趣的解决方法!另一种选择是使用RequestContext 隔离它们,我不记得版本45 是否可用,您可能需要升级到47。基本上默认情况下,它们共享一个Global RequestContext,有许多功能可以在RequestContext 级别上指定,因此很方便查看。
猜你喜欢
  • 2014-06-26
  • 1970-01-01
  • 2015-06-20
  • 2013-05-19
  • 1970-01-01
  • 2020-04-16
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多