Archief - Internet Explorer bashen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

bealzebub

Legacy Member
TheBud zei:
Ik snap hier niet goed wat je bedoelt. Browser compatibiliteit heeft niks met logica te maken, gaat over DOM functies (Of andere functies) en CSS effectjes die niet werken.

OK, laat me het even met een analogie voorstellen: IE8 en zelfs IE9 zijn zoals het autootje in deze golden oldie op youtube: https://www.youtube.com/watch?v=AyXgMal3C1U
De caravan is een iets of wat complexe clientside app. Om gewoon naar de bakker om de hoek te rijden (bv. een slideshow op een simpele website, een paar kleine animatietjes hier en daar) is da autootje best geschikt, t rijdt toch é.

Sommige van onze webapps zijn dus van die caravans, die we dan nog speciaal zo licht mogelijk maken om performant te blijven (en de caravan dus nie volladen met voedsel, kleren, campeermateriaal, etc. door er een zware library bovenop te gooien, maar bijna gans de binnenkant leeghalen, pure optimized Javascript dus). Chrome met z'n V8 motor (hehehe, t past nog ook) trekt dat zonder enige moeite den berg op, IE8 (en zelfs IE9) kunnen het gewoon nie aan. Dit gezegd zijnde is het tegenwoordig beter in de meest recente versies (en t is ook waar men op gefocust heeft).

We spreken over een DOM performance (append, prepend, insert, replace) die tussen 10 x (Firefox) en 45 x trager (Chrome) is en dat is met de versies rond dezelfde tijd van IE8, dus nog niet de meest recente iteraties. Als leuk extraatje moet je ook nog weten dat IE8 langs alle kanten geheugen lekt en dus op termijn voor crashes zorgt. Voor veel higher level frameworks moet de ontwikkelaar echt rekening houden met hoe browsers intern werken: hun Javascript engine, de layout renderer (en wanneer styles zullen herberekend worden) en zo bv. toevlucht nemen tot het offscreen uittekenen van de DOM tree om die pas zo laat mogelijk in de zichtbare DOM tree te gaan mergen. Het gaat hem dus niet zomaar om een andere functiebenaming. Als je in oudere versies van jQuery gaat bekijken wat er effectief gedaan wordt voor browser compatibiliteit (en hoe lelijk dat soms is), dan is dat helemaal anders dan het blindelings gebruiken van jQuery als eindgebruiker en erop vertrouwen dat "jQuery het wel allemaal voor jou fixt".

Wat heeft dat met logica en een deftige testsuite te maken? Een deel van de testsuite deed expliciet van die langlopende interacties met de clientside logic om te kijken of daar niets fout loopt op termijn. Chrome, geen probleem, Firefox, geen probleem, Safari, geen probleem, IE8, slow as hell. En wie mij een beetje volgt op dit forum weet da k nie zomaar wa uit m'n nek klets :)

T is trouwens nog altijd één van de meest pertinente problemen bij clientside MV(C) frameworks zoals EmberJS en Angular (of ze hebben het probleem opgelost door IE8 support te laten vallen).

TheBud

Legacy Member
bealzebub zei:
OK, laat me het even met een analogie voorstellen: IE8 en zelfs IE9 zijn zoals het autootje in deze golden oldie op youtube: https://www.youtube.com/watch?v=AyXgMal3C1U
De caravan is een iets of wat complexe clientside app. Om gewoon naar de bakker om de hoek te rijden (bv. een slideshow op een simpele website, een paar kleine animatietjes hier en daar) is da autootje best geschikt, t rijdt toch é.

Sommige van onze webapps zijn dus van die caravans, die we dan nog speciaal zo licht mogelijk maken om performant te blijven (en de caravan dus nie volladen met voedsel, kleren, campeermateriaal, etc. door er een zware library bovenop te gooien, maar bijna gans de binnenkant leeghalen, pure optimized Javascript dus). Chrome met z'n V8 motor (hehehe, t past nog ook) trekt dat zonder enige moeite den berg op, IE8 (en zelfs IE9) kunnen het gewoon nie aan. Dit gezegd zijnde is het tegenwoordig beter in de meest recente versies (en t is ook waar men op gefocust heeft).

We spreken over een DOM performance (append, prepend, insert, replace) die tussen 10 x (Firefox) en 45 x trager (Chrome) is en dat is met de versies rond dezelfde tijd van IE8, dus nog niet de meest recente iteraties. Als leuk extraatje moet je ook nog weten dat IE8 langs alle kanten geheugen lekt en dus op termijn voor crashes zorgt. Voor veel higher level frameworks moet de ontwikkelaar echt rekening houden met hoe browsers intern werken: hun Javascript engine, de layout renderer (en wanneer styles zullen herberekend worden) en zo bv. toevlucht nemen tot het offscreen uittekenen van de DOM tree om die pas zo laat mogelijk in de zichtbare DOM tree te gaan mergen. Het gaat hem dus niet zomaar om een andere functiebenaming. Als je in oudere versies van jQuery gaat bekijken wat er effectief gedaan wordt voor browser compatibiliteit (en hoe lelijk dat soms is), dan is dat helemaal anders dan het blindelings gebruiken van jQuery als eindgebruiker en erop vertrouwen dat "jQuery het wel allemaal voor jou fixt".

Wat heeft dat met logica en een deftige testsuite te maken? Een deel van de testsuite deed expliciet van die langlopende interacties met de clientside logic om te kijken of daar niets fout loopt op termijn. Chrome, geen probleem, Firefox, geen probleem, Safari, geen probleem, IE8, slow as hell. En wie mij een beetje volgt op dit forum weet da k nie zomaar wa uit m'n nek klets :)

T is trouwens nog altijd één van de meest pertinente problemen bij clientside MV(C) frameworks zoals EmberJS en Angular (of ze hebben het probleem opgelost door IE8 support te laten vallen).

Maar over wat voor type applicaties spreken we nu eigenlijk. Voor mij is er best wel een onderscheid tussen applicaties met veel logica (Javascript OOP, prototyping, etc) en applicaties die gewoon bijna continue op de DOM zitten te werken.

Als we over die hyper dynamische websites bezig zijn waar de DOM bij elke hover/resize/scroll wordt ge-update begrijp ik je frustratie heel goed. Maar als we spreken over enkel logica waar we werken met JSON datasets met veel ajax communicatie moet ik zeggen dat ik mijn javascript applicaties altijd wel aan de praat krijg op IE8 zonder veel problemen. Met IE7 heb ik veel grotere problemen.

Shaddix

Legacy Member
Kan je in IE11 nu eigenlijk al eindelijk de gewone javascript debug methodes gebruiken of moet je nog altijd een workaround maken?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan