Bij onze klanten gebruiken we een gelaagd template-systeem. Er is een basis-laag voor component A, daaorp een basis-laag voor component B, gevolgd door meerdere lagen voor een klant en zijn/haar sub-projecten.
Bij het zoeken naar bestanden gaan we van boven naar beneden; dit heeft als voordeel dat bestanden die niet gewijzigd zijn voor een project (maw gedefinieerd zijn in de klant-laag) bij een update automatisch meegaan.
Nu zijn er vaak wijzigingen die de klant op grote schaal wil doorvoeren. Denk aan submit-buttons met fancy randjes, andere teksten, radicaal andere layout etc - dat zou betekenen dat we alle templates moeten overzetten wat bij updates een tijdrovende klus is om weer bij te werken.
De teksten lossen we op met (wederom) gelaagde vertalingsbestanden. De fancy submit buttons,waar extra HTML voor nodig is (hulp-divjes) doen we door midel van JavaScript; we zoeken bv alle input[type=submit] en gooien extra hulp-divjes in de parentNode.
Dit laatste zie ik steeds meer gepromoot worden; denk aan de vele jQuery plugins en drop-in scripts, maar ook banners etc.
Het voordeel is duidelijk: kant en klare componenten, erin gooien en klaar. Het nadeel is dat de browser steeds meer voor zijn kiezen krijgt.
Dit geldt des te meer voor IE6, die geen first/last-child, multiple classes, direct-sibling selectors, attribute selectors etc. kent - om met generieke HTML de layout toch voor elkaar te krijgen wordt er voor IE6 een aantal hulp-scriptjes client-side gedraaid die die zaken dmv cssQuery (oid) uitzoekt en handmatig classes toevoegt, zodat een iefix.css dit weer recht kan trekken.
We merken dat de grafisch zware websites die we bouwen een bovengemiddelde last op de browser leggen. Daarbij worden de compenseer-de-css-tekortkomingen/vul-de-dom-aan etc. pas afgevuurd als de DOMContentLoaded is. IE kent dit niet, en we hebben nog geen oplossing gevonden om bij IE6 en banners (die weer in iframes draaien) de events vroeger af te vuren. Resultaat: onjuiste layout totdat de banner (of een andere externe resource) binnen is.
De laatste tijd zijn we aan het experimenten om dit server-side af te handelen. Met http://nl3.php.net/manual/en/class.domdocument.php en http://nl3.php.net/domdoc...ual/en/class.domxpath.php kan je al deze zaken oplossen vóór ze naar de browser gaan.
We zijn op dit moment de laatste problemen hierbij aan het oplossen; denk aan invalid html in/invalid uit, en dat als je content dmv ajax binnenhaalt de context vaak ontbreekt, waardoor selectors niet werken.
Zijn er andere mensen die op deze manier werken? Hoe bevalt het client-side laten afhandelen van dit soort problemen? Hoe werken jullie om de CSS-tekortkomingen van IE6 heen; wijzigen jullie per project de HTML om IE te helpen?
Bij het zoeken naar bestanden gaan we van boven naar beneden; dit heeft als voordeel dat bestanden die niet gewijzigd zijn voor een project (maw gedefinieerd zijn in de klant-laag) bij een update automatisch meegaan.
Nu zijn er vaak wijzigingen die de klant op grote schaal wil doorvoeren. Denk aan submit-buttons met fancy randjes, andere teksten, radicaal andere layout etc - dat zou betekenen dat we alle templates moeten overzetten wat bij updates een tijdrovende klus is om weer bij te werken.
De teksten lossen we op met (wederom) gelaagde vertalingsbestanden. De fancy submit buttons,waar extra HTML voor nodig is (hulp-divjes) doen we door midel van JavaScript; we zoeken bv alle input[type=submit] en gooien extra hulp-divjes in de parentNode.
Dit laatste zie ik steeds meer gepromoot worden; denk aan de vele jQuery plugins en drop-in scripts, maar ook banners etc.
Het voordeel is duidelijk: kant en klare componenten, erin gooien en klaar. Het nadeel is dat de browser steeds meer voor zijn kiezen krijgt.
Dit geldt des te meer voor IE6, die geen first/last-child, multiple classes, direct-sibling selectors, attribute selectors etc. kent - om met generieke HTML de layout toch voor elkaar te krijgen wordt er voor IE6 een aantal hulp-scriptjes client-side gedraaid die die zaken dmv cssQuery (oid) uitzoekt en handmatig classes toevoegt, zodat een iefix.css dit weer recht kan trekken.
We merken dat de grafisch zware websites die we bouwen een bovengemiddelde last op de browser leggen. Daarbij worden de compenseer-de-css-tekortkomingen/vul-de-dom-aan etc. pas afgevuurd als de DOMContentLoaded is. IE kent dit niet, en we hebben nog geen oplossing gevonden om bij IE6 en banners (die weer in iframes draaien) de events vroeger af te vuren. Resultaat: onjuiste layout totdat de banner (of een andere externe resource) binnen is.
De laatste tijd zijn we aan het experimenten om dit server-side af te handelen. Met http://nl3.php.net/manual/en/class.domdocument.php en http://nl3.php.net/domdoc...ual/en/class.domxpath.php kan je al deze zaken oplossen vóór ze naar de browser gaan.
We zijn op dit moment de laatste problemen hierbij aan het oplossen; denk aan invalid html in/invalid uit, en dat als je content dmv ajax binnenhaalt de context vaak ontbreekt, waardoor selectors niet werken.
Zijn er andere mensen die op deze manier werken? Hoe bevalt het client-side laten afhandelen van dit soort problemen? Hoe werken jullie om de CSS-tekortkomingen van IE6 heen; wijzigen jullie per project de HTML om IE te helpen?
Klaar voor een nieuwe uitdaging.