Probabilmente si desidera cambiare !(IE)
-(!IE)
Inoltre, il "normale" <body>
tag si sta parlando è in un commento condizionale. Il fatto che si trovi su una linea diversa non ha importanza, è ancora all'interno del tag del commento condizionale, quindi è influenzato in quanto tale.
I commenti condizionali per IE funzionano utilizzando i normali commenti HTML <!-- -->
in modo che qualsiasi codice all'interno di un condizionale "falso" sia appena commentato; <!-- <body class="ie6"> -->
IE ha quindi una propria sintassi all'interno di quello. In quanto tale, i browser non IE vedono solo una stringa commentata e IE la considera come una dichiarazione da eseguire.
Per questo motivo, viene visualizzato solo un tag del corpo e solo quello viene utilizzato.
Più spiegazione
<!--[if (gt IE 9)|!(IE)]><!-->
<body>
<!--<![endif]-->
a IE, questo dice:
<if greater than ie9, or not ie> (ie conditional comment)
<!--> (empty comment) (--> putting this here to stop SO ruining syntax highlighting :D)
<body>
<end if> (ie conditional comment)
Se non si capisce il motivo per cui, leggere il paragrafo di partenza "commenti condizionali per il lavoro IE .. . ".
Questo stesso blocco, a qualsiasi altro browser si presenta così:
<!--[if (gt IE 9)|!(IE)]><!--> (this is just one comment, containing the text "[if (gt IE 9)|!(IE)]><!")
<body>
<!--<![endif]--> (again, just one comment, containing "<![endif]")
Ho spiegato un po 'di più sulla "magia" in una modifica alla mia risposta, dopo averlo accettato, quindi lo metto qui per assicurarmi che tu lo veda :) – Joe