2010-10-18 37 views
5

我發現組件TwebBrowser中有一個奇怪的行爲,當我加載某些頁面時,它們顯示的字體較大。與Internet Explorer中使用的不同。TWebrowser加載大字體頁面

看到這些樣本圖像

在這裏,在此鏈路http://docwiki.embarcadero.com/RADStudio/en/Main_Page裝載有在TWebBrowser並與IE小字體(另一樣式)的字體。

alt text

此頁面https://stackoverflow.com/加載在TWebBrowser組件和IE一樣的風格。

alt text

我想它在不同的機器和同樣的事情發生。

我該如何解決這個問題?這是一個CSS的問題?

回答

1

我認爲問題在於TWebBrowser組件以兼容模式運行Internet Explorer。事實上,如果您在Internet Explorer 8及更高版本中打開docwiki頁面,則字體非常小巧,與TWebBrowser中的外觀相反。但是,如果在Internet Explorer窗口中單擊「兼容性視圖」按鈕,您將獲得與TWebBrowser組件中獲得的文本相同的大文本。 (它是公知的是IE6使用過大文本)

根據this MSDN blog entrythe MSDN docs,以控制TWebBrowser控制的兼容模式,使用註冊表:

procedure TForm3.FormCreate(Sender: TObject); 
begin 

    with TRegistry.Create do 
    try 
     RootKey := HKEY_CURRENT_USER; 
     if OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', true) then 
     WriteInteger(ExtractFileName(Application.ExeName), 8888); 
    finally 
     Free; 
    end; 

    WebBrowser1.Navigate('http://docwiki.embarcadero.com/RADStudio/en/Main_Page'); 
end; 

的值是8000, 7000和8888分別用於「IE8標準模式」,「IE7標準模式」和「IE8標準模式(強制)」。因此,上面的代碼將強制IE8標準模式。

然而,令人驚訝的是,將模式設置爲標準只會使字體更大

+0

Andreas,感謝您對「兼容模式」的評論,但是爲什麼有些頁面在兼容模式下運行時看起來使用相同的樣式和字體呢? – Salvador 2010-10-18 22:10:53

0

我通常通過設置ZOOM解決這個問題:

WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, zoom); 

您需要使用OLECMDID_GETZOOMRANGE確定zoom的有效範圍。請閱讀MSDN documentation的評論以獲取更多信息。