Vor zwei Tagen hab ich euch erzählt, dass ich einen netten Bug im Internet Explorer gefunden habe. Das Ganze ist mehr oder weniger purer Zufall gewesen...
Unter bestimmten Umständen lässt sich der Internet Explorer zu 100% auslasten. Somit wird er unbedienbar und man muss ihn per Taskmanager ins Nirvana schicken.
Ich weiss zwar nicht genau welche Effekte dazu führen, aber ich kann euch ein Beispiel geben mit dem ihr das reproduzieren könnt.
In einem anderen Eintrag habe ich darüber geschrieben, wie man dem Internet Explorer den Tabellen-Hovereffekt per Javascript in CSS beibringen kann: Hover-Effekt beim Internet Explorer in Tabellen
Den solltet ihr euch zuerst durchlesen, sowie den JavaScript Calendar aus dem Javascript Kalender Eintrag runterladen.
Wenn ihr alles habt, probiert mal das aus, was in Listing 1 steht. Der Javascript Kalender muss ein Ordner tiefer liegen, wie das Testscript.
Klickt ihr nun mit der Maus auf ein Textfeld und fahrt ein wenig im aufpoppenden Kalender herum, steigt die Auslastung des Internet Explorer auf 100%. Voilà und schon ist der Internet Explorer nicht mehr bedienbar.Toll ist das nicht, vorallem da ich nicht genau weiss was dafür verantwortlich ist. . Also was sich da beisst. Es hat aufjedenfall etwas mit dem Javascript im CSS zu tun. Entfernt ihr nähmlich das, klappts auch mit dem Internet Explorer. Leider kann ich momentan aus Zeitgründen mich nicht durch den Code des Kalenders arbeiten um rauszufinden was da passiert. PS. Mit dem Firefox funktioniert es natürlich.
Listing 1
Download Code!
<title>Internet Explorer Bug
</title>
tr{
hover:expression(this.onmouseover=new Function("this.style.background='#ffffd9;';"),this.onmouseout=new Function("this.style.background='#fff;';"));
}
</style>
<link rel="stylesheet" type="text/css" media="all" href="./jscalendar/calendar-blue.css" title="win2k-cold-1" /> </head>
Von:
<input type="text" id="date1">Bis:
<input type="text" id="date2">
</select>
</form>
<script type="text/javascript" src="./jscalendar/calendar.js"></script> <script type="text/javascript" src="./jscalendar/lang/calendar-en.js"></script> <script type="text/javascript" src="./jscalendar/calendar-setup.js"></script> function catcalc(cal) {
var date = cal.date;
var time = date.getTime()
// use the _other_ field
var field = document.getElementById("date1");
if (field == cal.params.inputField) {
field = document.getElementById("date2");
time -= Date.WEEK; // substract one week
} else {
time += Date.WEEK; // add one week
}
var date2 = new Date(time);
field.value = date2.print("%d.%m.%Y");
}
Calendar.setup({
inputField : "date1", // id of the input field
ifFormat : "%d.%m.%Y", // format of the input field
showsTime : false,
timeFormat : "24",
onUpdate : catcalc
});
Calendar.setup({
inputField : "date2",
ifFormat : "%d.%m.%Y",
showsTime : false,
timeFormat : "24",
onUpdate : catcalc
});
</script>
</body>
</html>