2013-06-11 16 views
5

Su un Windows 7 con IE8, trovo che lo display: inline-block funzioni abbastanza bene. Tuttavia, dopo aver compilato il file html in chm, la pagina all'interno di chm non viene visualizzata correttamente, come se inline-block non abbia alcun effetto.Perché la pagina viene visualizzata in modo diverso in IE8 e in chm (problema "display: blocco in linea")

C'è un modo per far visualizzare chm come in IE8? Grazie.

enter image description here

La mia fonte HTML è:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>title to fill</title> 
<meta charset="utf-8"> 
<style type="text/css"> 
#topcanvas { 
    z-index: 0; 
    top: 0; 
    left:0; 
    width:100%; 
} 

#chjnavi { 
    font-size: 10pt; 
    background-color: #eee; 

    padding: 0em 1em; 
    list-style-type: none; 
    position: relative; 
    z-index: 0; 
} 

#chjnavi ul { 
    margin: 0; 
    padding: 0; 
} 

#chjnavi li { 
    margin: 0; 
    padding: 8px; 
    display: inline-block; 
     /* !!! */ 

    cursor: pointer; 
} 

</style> 
</head> 

<div id="topcanvas"> 
<div id="chjnavi"> 
    <ul id="navibar_topul"> 
     <li id="gentoc-t">item 1</li> 
     <li id="codecolor-t">item 2</li> 
     <li id="linenum-t">item 3</li> 
    </ul> 
</div> 
</div> 
<p> My text. </p> 
</body> 
</html> 

risposta

2

Trovo finalmente la risposta. A post at west-wind.com mi dice che ho bisogno di fare un hack del registro per fare in modo che il lettore CHM (hh.exe) usi la modalità di rendering IE8, altrimenti hh.exe usa al massimo IE7.

La modifica del registro è: salvare il seguente codice in un file .reg, quindi fare doppio clic per importarlo nel registro.

REGEDIT4 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION] 
"hh.exe"=dword:00001f40 

OK. Almeno c'è una soluzione per il sistema IE8 M $.

Questa domanda è legata alla Will the IE9 WebBrowser Control Support all of IE9's features, including SVG?

+0

Word of warning con questo trucco: la modifica è globale, il che significa che tutti i contenuti CHM verranno visualizzati utilizzando la versione IE aggiornata. Ciò potrebbe causare problemi ad altri (più vecchi) file della guida che prevedono l'utilizzo di IE 7. Personalmente non ho avuto problemi, ma è bene tenerlo a mente prima di cambiare un'impostazione globale sulle macchine delle persone. –

0

Invece di inline-block con necessario utilizzare float: left; per IE8 in quanto non supporta la proprietà di Inline-block;

Quindi questo è quello che dovrai aggiungere al tuo codice.

#chjnavi li { 
    margin: 0; 
    padding: 8px; 
    display: inline-block; 
    cursor: pointer; 
    float:left\9; /* This works for IE8 and below so apply this to your code*/ 
} 
+0

Cosa \ 9 in "sinistra \ 9" significa, per favore? –

+0

E il tuo codice usa ancora '' inline-block'', contrariamente alla tua opinione di "invece di blocco in linea". –

+0

\ 9 è un trucco utilizzato per IE. Questa riga di codice viene aggiunta dopo il tuo css e si applicherà solo a IE e non influenzerà altri browser. Il blocco in linea nel codice non ha importanza in quanto verrà applicato ad altri browser, poiché in ogni caso il blocco in linea non funziona per IE. – LegendaryAks