AnySurfer blogt

Text-resize detection, wow!

19 september 2006 door Roel Van Gils · 5 reacties

A List Apart is terug van weg geweest met een razendinteressant artikel over text-resize detection. Met JavaScript is het mogelijk om uit te zoeken wat de huidige tekengrootte is van een elementje op een webpagina. Maar daarnaast — en d?? t is pas leuk — kan je met behulp van event listeners iedere groottewijziging detecteren om met die informatie vervolgens iets nuttigs doen. Het werkt in iedere browser, of het aanpassen van de tekengrootte nu met CTRL +/-, met het scrollwieltje of op een andere manier gebeurt.

Deze techniek opent heel wat interessante perspectieven:

  • Je zou een alternatief stijlblad kunnen inladen van zodra de tekengrootte een vooraf ingesteld maximum overschrijdt (de grootte waarop alles in elkaar dreigt te klappen of overlappingen de tekst onleesbaar maken — en dat verschilt voor ieder CSS-ontwerp).
  • Grafische knoppen en titels zou je ‘on the fly’ kunnen vervangen door exemplaren met ‘grotere letters’. Scripts als SIFR detecteren nu al de tekengrootte voor ze beginnen met het ‘replacen’, maar bevatten geen event listeners die de tekengrootte van de grafische tekstdeeltjes beïnvloeden bij het vergroten of verkleinen (je moet eerst de pagina vernieuwen om het effect te kunnen zien). Misschien iets voor een volgende versie van SIFR?
  • Met wat extra programmeerwerk zou je zelfs een script kunnen schrijven dat het eeuwenoude schaalbaarheidsrobleem in IE oplost. Je weet wel: als de tekengrootte uitgedrukt is een absolute eenheid (zoals pixels of punten), dan heeft het vergroten of verkleinen van tekst geen enkel effect. Met de techniek die op ALA besproken wordt, kunnen webdesigners toch hun geliefde pixels blijven gebruiken, maar een script zou de bug kunnen ‘repareren’ door het vergrotingspercentage dat op de body-tag zit met 25% te verhogen of te verlagen als gedetecteerd wordt dat de hoogte van een (onzichtbaar gemaakt) span-element gewijzigd wordt (dus: wanneer een bezoeker de tekengrootte aanpast in z’n browser).
  • Ten slotte kan deze techniek een vaak gehoord argument om géén pixels of punten te gebruiken van tafel vegen: “Ja maar, sommige mensen klagen dat de tekst veel te klein of veel te groot is als ze op onze website komen”. Dat komt dan doordat bezoekers eerder wat ‘gespeeld’ hebben met de tekengrootte-instellingen in IE (of per abuis het scrollwieltje gebruikt hebben terwijl ze CTRL ingedrukt hielden), maar hiervan op andere sites (die wél pixels of punten gebruiken) geen effect merkten. Enkel op ‘sommige’ sites (sites die wél relatieve eenheden gebruiken) wordt de tekst dan plots heel groot of heel klein en daardoor soms onleesbaar. Wel, dit probleem kan opgevangen worden door bij het laden van de webpagina de tekengrootte te herdefiniëren a.h.v. van de grootte van de tekst in het verborgen span-elementje. En een cookie moet er dan voor zorgen dat de browser (IE dus) onhoudt welke tekengrootte de gebruiker heeft ingesteld. Met wat reken- en prutswerk (en veel gevloek) moet dat kunnen. Vrijwilligers? :)

To zover. Als ik nog eens veel tijd heb, ga ik me zeker aan het experimenteren zetten.

Tags: Standaard

5 reacties

  • 1 Dries // 19 september 2006 om 12:16 pm

    Dat is inderdaad een leuk script.
    Vooral het switchen van css zie ik wel zitten.

  • 2 Erlend // 20 september 2006 om 8:41 pm

    De toepassing biedt heel veel mogelijkheden, zeker als je kan gaan werken met een nieuwe stylesheet als je fonts te groot worden.

    Maar iets wat ik mij al heel lang afvraag, hoeveel mensen wijzigen in firefox of internet explorer hun font-size?

  • 3 Roel // 21 september 2006 om 12:15 am

    @Erlend: mensen die browsertekst vergroten zijn ofwel slechtziend (zo’n 1 op 100), gebruiken een laptopscherm met een ergerlijk hoge resolutie (ze zijn een plaag!), zitten graag wat verder van het scherm af etc. Of ze projecteren een website tijdens een presentatie: “Oei, dat is precies te klein om te kunnen lezen, even vergroten… ah nee, dat werkt hier precies niet”. Ik heb het meermaals zien gebeuren :)

    Hoeveel mensen die optie nu écht gebruiken, is moeilijk te bepalen. Maar (aha!) met deze techniek zou je zulke gegevens – of iemand de standaardtekengrootte gebruikt of niet – in principe ook kunnen doorspelen aan JavaScript-gebaseerde analysetools als Google Analytics of Mint. Zelf zou ik het niet kunnen maken, maar Mint heeft een plug-inarchitectuur (‘Pepper’) waarmee je zelf uitbreidingen kan schrijven voor deze analysetool.

  • 4 Danny // 18 oktober 2006 om 10:10 am

    Schitterend! Ja, ben effe weg geweest op vakantie, vandaar de late reactie. Ik zie het wel zitten om daar iets mee te doen, misschien in de volgende versie van mijn blog…

  • 5 AnySurfer blogt » Aanwezigheid van lettertypes detecteren met JavaScript // 13 maart 2007 om 1:28 pm

    [...] Aanwezigheid van lettertypes detecteren met JavaScript Geschreven door Roel Van Gils om 13u28 Onlangs bedacht Chris Heilman een manier om te detecteren wat de grootte van browsertekst is. Ene Lalit Patel heeft hier nu een vervolg aan gebreit: hij heeft een script geschreven waarmee je de aanwezigheid van bepaalde lettertypes kan detecteren op iemands computer. Met JavaScript. Waauw, zeg ik dan. Fijn voor de CSS-controlefreaks. [...]