www.lipfert-malik.de>webdesign>tutorial>Multiple IE Impressum    

Multiple-IEs

Version-Test und Betrieb

Kristof Lipfert
Dipl.-Des FH

Die möglichen Unzulänglichkeiten von Parallelinstallationen mehrer IEs erfordern eine Kontrolle der jeweiligen Browser. Die folgende Testmethode erleichtert dem Webdesigner den Umgang mit solchen Browserinstallationen. Getestet werden Browserweichen wie z.B. CSS-Hacks oder conditional comments oder, soweit möglich, das Darstellungsverhalten.

Keine Haftung für hier vorgestellte Bespiele und Verfahren. Alle genannten oder zitierten Marken- und Produktbezeichnungen sind Warenzeichen der entsprechenden Inhaber. Alle Rechte vorbehalten.

Testergebnis Multiple IEs Multiple IE Testing Result:

Test Conditional Comment

Kein IE (o. IE 4)

Test Conditional Compilation JScript

Test CSS Crossover

IE 4 IE 5 IE 5.5 IE 6 IE 7 Kein IE

Test JavaScript/expression

IE 5 IE 5.5 IE 6 IE 7

IE Layout Test BoxBug /:first-line

IE 6
 

IE 5 oder
IE 5.5


Multiple-IE Multiple Explorers on one computer

Mehrere IEs in einer Windows-Installation nutzen zu können ist ein alter Hut. Wer noch Windows 95 genutzt und dabei auch den Internet Explorer upgedatet hat, erinnert sich wahrscheinlich, dass Microsoft mit Erscheinen des IE 5 extra eine Möglichkeit vorgesehen hat, den IE4 weiterhin parallel verfügbar zu haben. Entsprechend kann auch unter Windows 98 ohne Probleme der gleichzeitige Einsatz von IE 5 und IE 5.5 verwirklicht werden, sogar mit richtiger Funktion der gleich noch thematisierten conditional comments.

Using multiple Explorers is not new. Who used Windows 95 and updated the Explorer may remember that Microsoft has given the opportunity to keep the IE 4 any more although upgrading to IE 5. Windows 98 allows in a similar way to use IE 5 and 5.5, with conditional comments working too.

Dabei wird während der Installation der IE 5 gefragt ob der IE 4 weiterhin verfügbar belieben soll, und ein entsprechend reduzierter IE 4 findet sich dann, abwärtskompatibel nutzbar, neben dem IE 5 oder 5.5.

There is a special switch at the installation of IE Version 5 wether to keep the old IE 4.

MultipleIEsInternet Explorer 4

Ein Blick in das Verzeichnis des IE4 zeigt denn auch im Wesentlichen die Dateien, wie sie auch unter XP als multiple-IE ntuzbar sind. Für XP gilt es noch, eine leere explorer.exe.local im betr. Verzeichnis zu erzeugen. Dabei haben aber die empfohlenen Methoden unter Windows 98 wie auch unter XP zwei entscheidende Nachteile bei der Verwendung von IE 4, 5, 5.5. und 6.

The files you can find in that IE 4 directory are quite similar to some mentioned multiple-IEs. Some problems are disturbing the use of multiple IE 4, 5, 5.5. and 6.

conditional comments

Die Verwendung von conditional comments, die ja als IE spezifische Browserweichen ihre Vorteile haben, gelingt unter XP zunächst nicht mehr stimmig. Dazu gibt es u.U. unter Windows 98 z.B. nach dem Aufruf eines IE4 bei entsprechenden multi-IE Tests den Effekt, dass die IE 5x Browser nicht mehr funktionieren.

The use of conditional comments does not work fine. And the running of IE 4 may let the formerly fine working IE 5 and 5.5 crash oder work like the IE 6. So often at Windows 98, but at XP there are problems too.

Eine Ursache könnten Registryeinträge wie H_L_M\SOFTWARE\Microsoft\IE4\Setup und H_L_M\SOFTWARE\Microsoft\IE Setup\Setup sein. Nun ist immerhin zur Verwendung der conditional comments eine einfache Registryänderung möglich, die zumindest bei Windows XP erfolgreich zu sein scheint, nämlich das Ändern des Schlüssels Version Vector in der Registry, welcher als Grundlage für die conditional comments mächtiger ist als die jeweiligen Browserdateien.

One reason may be found at H_L_M\SOFTWARE\Microsoft\IE4\Setup and H_L_M\SOFTWARE\Microsoft\IE Setup\Setup. But it is possible to improve the behaviour at conditional comments by the change of the Version Vector Key in the registry, wich controls the conditional comment more than the used Browserfiles.

Version Vector / Registry

Auf der Suche einer Lösung fand ich in der Registry den für die Probleme verantwortlichen Eintrag "Version Vector", und tatsächlich war bei meinen Tests das Entfernen des Version Vector erfolgreich, vorsorglich per Umbenennung des Schlüssels in HLM\Software\Microsoft\Internet Explorer\Version_Vector. Für Windows 98 scheint diese Vorgehensweise aber, im Gegensatz zu XP, beim Explorer 6 nicht auszureichen.

A simple way is renaming to HLM\Software\Microsoft\Internet Explorer\Version_Vector.

Als Workaround für Probleme mit dem IE 5.5, welche nach Aufruf des IE 4 nicht mehr richtig starten wollte, fand ich erstmal den Aufruf mit einem nicht vorhandenen Ziel und der anschließenden Auswahl offline zu bleiben: ..\IE55\IEXPLORE.EXE dummy

And as a workaround for IE5.5 is to start with a not existiting file like ..\IE55\IEXPLORE.EXE dummy.

Komfort

Immerhin gibt es noch eine Möglichkeit die IEs im Parallelbetrieb besser zu unterscheiden. Die Datei browselc.dll enthält den Schriftzug "Microsoft Internet Explorer" für die im Browser oben angezeigte Titelzeile und eignet sich zur Anpassung, dazu könnte mittels Hex-Editor, beim IE 6 z.B. im Bereich 8040, solange keine urheberechtlichen Bedenken o.ä. bestehen, ein Hinweis auf die betr. Version eingebaut werden.
Nachtrag: Mittlerweile gibt es offenbar z.B. auch bei tredosoft.com entspr. Dateien

Fazit

Zunächst die Möglichkeiten, unter Windows XP können die IE 5, 5.5 und 6 -mit etwas Nachhilfe- parallel auch mit conditional comments genutzt werden. Unter Windows 98 sieht es ähnlich aus, ohne Registryänderungen kann ein Windows 98 System immerhin IE 5 und IE 5.5 einschließlich der conditional comments genutzt werden. Der Einsatz des IE 4 ist unter Windows 98 wie auch unter Windows XP ein Risiko für das weitere Funktionieren der Browser 5 bis 5.5.

First the possibilities, it is possible to run IE 5 and IE 5.5 parallel in Windows 98, conditional comments working too. Using IE 4 is a risk at Windows 98 and Windows XP, it may disturb IE 5.5.

Schließlich der wichtigste Punkt einer solchen Geschichte: Der verläßliche Test, dass sich die Browser wirklich ihrer Version entspr. verhalten. Dazu gibt es folgende Test-Bereiche:

Now the most important aspect: A sure verfication that the Browser really behaves like expected. What can be tested:

Natürlich bleibt der Layoutvergleich auch abhängig vom Doctype bzw. Rendermodus, etwa bei browserspezifische Eigenheiten wie dem Boxbug als Kontrolle.

Der einfachste Test bei den Windows-Explorern 5 bis 6 sind sicherlich die conditional comments. Auch die CSS-Weichen sprechen spezifische Fähigkeiten an, JavaScript kann natürlich je nach Konfiguration deaktiviert sein, ergänzend könen wir -bei gleicher Problematik- JavaScript Objekte auch noch per expression, einer proprietären JavaScript-Schnittstelle im CSS, abfragen.

IE 7

Um den IE 7 zu berücksichtigen, scheint mittlerweile die Installation des IE 7 beim Betrieb des IE 6 als standalone der beste Kompromiß.

To include IE 7 a installing of IE 7 and the use of IE 6 as standalone seems the best Compromise.

Test Code

conditional comment

<!--[if IE 7]>       IE 7    <![endif]-->

<!--[if IE 6]>       IE 6    <![endif]-->

<!--[if IE 5.5000]>  IE 5.5  <![endif]-->

<!--[if lt IE 5.1]>  IE 5    <![endif]-->

<!--[if !IE]><!--
               -->
                   IE 4 oder kein IE
<!--
               <![endif]-->

conditional compilation

/*@cc_on
     @if   (@_jscript_version >= 5.7) ievar="IE 7";
     @elif (@_jscript_version >= 5.6) ievar="IE 6";
     @elif (@_jscript_version >= 5.2) ievar="IE 5.5";
     @elif (@_jscript_version >= 5  ) ievar="IE 5";
     @elif (@_jscript_version >= 3  ) ievar="IE 4";
     @else @*/                        ievar="Kein IE";
   /*@end
@*/
document.write(ievar);

JavaScript

<span style="display:expression('none')"><script type="text/javascript">
document.write((document.all&&!document.getElementById)?'IE 4':'Kein IE')</script></span>
<span class="test" style="display:expression(
 document.createEventObject ? 'none' : 'inline');">IE 5</span>
<span class="test" style="display:expression(
 document.createDocumentFragment ? 'none' : 'inline');">IE 5.5</span>
<span class="test" style="display:expression(
 document.compatMode&&!window.XMLHttpRequest ? 'inline' : 'none');">IE 6</span>
<span class="test" style="display:expression(
document.compatMode && window.XMLHttpRequest ? 'inline' : 'none');">IE 7</span>

CSS

#I4_E, #I50E, #I55E, #I6_E, #I7_E {display:none}

html.dummy * body #I4_E { display:inline; }

@media all{* html > body #I50E { display:inline; }}

html.*  # #I55E { display:inline; }

* html #I6_E { d\isplay:inline; }

*:first-child+html #I7_E[id] { display:inline;  }

BoxBug

<div style="color:red;font-weight:bold;display:block;
      width:50px;height:50px;border:50px solid #ecffec;
      background-color:#ecffec;overflow:hidden;">
  IE 6
</div>

<div style="text-align:right;width:140px;height:90px;overflow:hidden">
<div style="width:50px;height:10px;border:40px solid #ecffec;overflow:hidden"> </div>
<span style="color:red;font-weight:bold;">IE 5 - 5.5</span>
</div>
</div>

:first-line


#i3t span {color:red;}
#i3t p:first-line{color:#ecffec}

Browserstart

Für den Firefox gibt es eine praktische Addon Extension Launchy. Das läßt sich auch für Firefox 2.0 nutzen und erlaubt den Aufruf externer Programme bei Übergabe der im Browser geladenen Adresse. Eine launchy.xml im chrome-Verzeichnis erweitert die Möglichkeiten:

<?xml version="1.0" encoding="UTF-8"?>
<configurations xmlns="http://launchy.mozdev.org/configurations">
		<label>IE 6</label>
		<type>1</type>
		<command>C:\Programme\MultipleIEs\IE6\iexplore.exe</command>
	</application>
	<application>
		<label>IE 5.5</label>
		<type>1</type>
		<command>C:\Programme\MultipleIEs\IE55\iexplore.exe</command>
	</application>
	<application>
		<label>Alle Browser</label>
		<type>1</type>
		<command>C:\Programme\Browser\browser.bat</command>
	</application>
        <application>
		<label>ConTEXT</label>
		<type>7</type>
		<command>C:\Programme\ConTEXT\context.exe</command>
	</application>
</configurations>

Hier ein Beispiel für die Datei browser.bat, welche über Launchy aufgerufen werden kann, um mehrere Programme gleichzeitig zu starten.

cd C:\Programme\MultipleIEs\IE55\
 start C:\Programme\MultipleIEs\IE55\iexplore.exe %1
cd C:\Programme\MultipleIEs\IE6\
 start C:\Programme\MultipleIEs\IE6\iexplore.exe %1
cd C:\Programme\Opera\
 start C:\Programme\Opera\Opera.exe %1
cd "C:\Programme\Internet Explorer\"
 call "C:\Programme\Internet Explorer\iexplore.exe" %1

Links

Autor

Kristof Lipfert, Düsseldorf.

© Lipfert u. Malik GbR Düsseldorf, Kristof Lipfert, 2003, 2006