2016-04-25 537 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