2011-12-27 64 views
3

我使用TChromium。我分配了AWebPageAsString這是一個灰色背景色的靜態HTML頁面。如何更改TChromium組件的默認背景色?

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'); 

當我啓動它與白色背景和內容爲空,然後我的網頁獲取與灰色背景和實際內容顯示第一顯示的應用程序。

是否有辦法避免這種情況?也許有一個默認的背景顏色?

+0

你爲什麼不加載與瀏覽器的頁面隱藏起來,只顯示它的時候加載完成? –

+0

可能是因爲這是Chrome引擎的功能。當我將Chrome瀏覽器縮短了一段時間,然後將其恢復並導航到不同的選項卡時,它會顯示完全白色背景並且沒有內容,然後才能像以前一樣顯示頁面。 –

+0

「爲什麼不加載隱藏瀏覽器的頁面,只在加載完成後才顯示?」 - 用可見性屬性和OnLoadEnd嘗試這種方式,但仍然是相同的行爲。 –

回答

2

相當晚的答案,我知道,但它至少一個有趣的話題。要更改默認瀏覽器的背景顏色,您可以使用自定義樣式表。這聽起來很不錯,但它有一個很大的弱點 - 當你瀏覽到一個有例如沒有定義樣式表,您的自定義樣式將被應用。但是如果你知道你會瀏覽只有您的頁面處於某種風格,這可能更有優勢,因爲您可以保留在該默認自定義樣式中定義的樣式定義。

所以創建具有黑色背景上的瀏覽器(使用下面描述的樣式),可以使用這個代碼:

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常數是以下樣式表:

body {background-color:black;} 
+0

工程像魅力。我花了兩年的時間來實施它。 :) –

相關問題