2016-04-25 536 views
0

我有一个应用程序,可以有多个窗口,并在每个窗口中有一个自定义UserControl托管CefSharp.WinForms.ChromiumWebBrowser控件。为什么CefSharp.WebBrowserExtensions.SetZoomLevel影响所有实例?

我可以使用CefSharp. WebBrowserExtensions. SetZoomLevel来改变浏览器的缩放级别,没有任何问题。

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

为什么会这样,以及如何防止?我惊讶地发现SetZoomLevel的调用通过了一个特定的控件实例,但所有其他实例也受到影响。

P.S .:我使用的是CEF 3.2454.1344.g2782fb8(Chromium 45.0.2454.101)。

+0

显然,这是铬设计,请参见[这里](https://bugs.chromium.org/p/chromium/issues/detail?id=390775)。缩放级别按域进行链接,即,浏览同一域的页面的所有控件实例共享公共缩放级别。由于我使用Cef作为用户界面,它由我自己的服务器提供,所有页面都在'http:// localhost'。有没有人有任何想法如何绕过这个“功能”? – mike

回答

0

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

+1

有趣的解决方法!另一种选择是使用'RequestContext'来隔离它们,我不记得''45'版本是否可用,你可能需要升级到'47'。基本上默认情况下,它们共享一个'Global RequestContext',有很多特性可以在'RequestContext'级别指定,所以它是一个方便的应用。 – amaitland