Как изменить цвет фона по умолчанию для компонента TChromium? - PullRequest
3 голосов
/ 27 декабря 2011

Я использую TChromium. Я назначаю AWebPageAsString, который является статической HTML-страницей с серым фоновым цветом.

FBrowser := TChromium.Create(pnlHolder);
FBrowser.Visible := false;
FBrowser.Parent := TWinControl(pnlHolder);
FBrowser.Align := alClient;
FBrowser.OnBeforeBrowse := BrowserBeforeBrowse;
FBrowser.HandleNeeded;
FBrowser.FontOptions.RemoteFontsDisabled := true;
FBrowser.Browser.MainFrame.LoadString(AWebPageAsString, 'navigate:webpage');

Когда я запускаю приложение, оно отображается сначала с белым фоном и пустым содержимым, а затем моя страница отображается с серым фоном и фактическим содержимым.

Есть ли способ избежать этого? Может иметь цвет фона по умолчанию?

1 Ответ

2 голосов
/ 22 августа 2012

Довольно поздний ответ, я знаю, но это по крайней мере интересная тема.Чтобы изменить цвет фона браузера по умолчанию, вы можете использовать пользовательскую таблицу стилей.Звучит хорошо, но у него есть один большой недостаток - когда вы переходите на страницу, на которой, например, не определена таблица стилей, будет применена ваша пользовательская.Но если вы знаете, что будете просматривать, например, только свои страницы в определенном стиле, это может быть даже преимуществом, поскольку тогда вы можете оставить определения стилей, определенные в этом пользовательском стиле по умолчанию.

Итак, чтобы создать браузерс черным фоном (используя стиль, описанный ниже) вы можете использовать этот код:

procedure TForm1.FormCreate(Sender: TObject);
const
  CSSHeader = 'data:text/css;charset=utf-8;base64,';
  CSSBase64 = 'Ym9keSB7YmFja2dyb3VuZC1jb2xvcjpibGFjazt9';
begin
  Chromium1.UserStyleSheetLocation := CSSHeader + CSSBase64;
  Chromium1.Options.UserStyleSheetEnabled := True;
  Chromium1.ReCreateBrowser('about:blank');
end;

Константа CSSBase64, используемая в приведенном выше коде, представляет собой следующую таблицу стилей encoded to Base64:

body {background-color:black;}
...