2016-04-25 10 views
0

Ich habe eine Anwendung, die mehrere Fenster haben kann und in jedem Fenster gibt es eine benutzerdefinierte UserControl, die ein CefSharp.WinForms.ChromiumWebBrowser Steuerelement hostet.Warum wirkt sich CefSharp.WebBrowserExtensions.SetZoomLevel auf alle Instanzen aus?

Ich kann die Zoomstufe des Browsers mit CefSharp. WebBrowserExtensions. SetZoomLevel ohne Probleme ändern.

Das einzige Problem, das ich habe, ist, dass dabei die Zoomstufe von alle Browser-Instanzen (in allen separaten Fenstern) ändert.

Warum ist das so und wie kann es verhindert werden? Ich finde es überraschend, dass der Aufruf an SetZoomLevel eine bestimmte Kontrollinstanz übergeben wird, aber auch alle anderen Instanzen betroffen sind.

P.S .: Ich verwende CEF 3,2454,1344.g2782fb8 (Chromium 45.0.2454.101).

+0

Offenbar ist dies by-Chrome-Design, siehe [hier] (https://bugs.chromium.org/p/chromium/issues/detail?id=390775). Die Zoomstufen sind nach Domäne verknüpft, d. H. Alle Steuerinstanzen, die Seiten derselben Domäne durchsuchen, teilen eine gemeinsame Zoomstufe. Da ich Cef als UI nutze, das von meinem eigenen Server bedient wird, befinden sich alle Seiten auf "http: // localhost". Hat jemand Ideen, wie man dieses "Feature" umgehen kann? – mike

Antwort

0

Anscheinend ist die Zoomstufe per unter -Domäne verknüpft. Wenn ich "http://window1.localhost" und "http://window2.localhost" verwende, kann ich die Zoomstufen unabhängig voneinander einstellen.

+1

Interessante Problemumgehung! Die andere Möglichkeit besteht darin, sie mit einem 'RequestContext' zu isolieren, ich kann mich nicht erinnern, ob das in Version' 45' verfügbar ist, Sie müssen vielleicht auf '47' upgraden. Grundsätzlich teilen sie sich einen 'Global RequestContext', es gibt viele Funktionen, die auf der' RequestContext' Ebene angegeben werden können, daher ist es ein praktischer Blick. – amaitland

Verwandte Themen