4 december 2008

Smilies(2)

Zoals ik eerder al schreef, erger ik me wild aan die domme smilies in Hyves. En maakte ik een userscript voor GreaseMonkey die ze omzet in hun oorspronkelijke karakter-combinaties.

Ik heb het zo gemaakt, dat alleen smilies in krabbels worden weggehaald, ik had ook gewoon alle smilies kunnen verwijderen, maar in de krabbels vind ik ze vervelend, op andere plekken kunnen ze me niet zoveel schelen. Bovendien zou het ten koste gaan van de performance; na iedere klik zou de hele pagina doorlopen moeten worden, nu alleen de krabbels.

Hoe het werkt:
Op het 'load' event van de pagina draait het userscript, dat alle <img> elementen doorloopt en het <img> element vervangt door een <div> met als tekst de karaktercombinatie die bij de smiley hoort; deze staat in het 'alt' attribute van het plaatje. Ik kies ervoor om de oorspronkelijke karakters te tonen, omdat anders informatie verloren gaat; tenslotte wil iemand met een 'smiley' wel iets communiceren. Evengoed had ik het plaatje weg kunnen halen, of vervangen door een ander plaatje. Eén van de lastiger dingen was, dat je in krabbels een navigatiemenu hebt, dat een volgende/vorige set krabbels toont. Daarbij wordt geen 'load' event gegenereerd, want dit gaat met AJAX. Dus draaide mijn userscript ook niet en kreeg ik die vreselijke smilies alsnog te zien. Uiteindelijk vond ik het 'DOMNodeInserted' event, geen idee of dat het aangewezen event is om naar te luisteren, maar het werkt en ik heb dit toch heus echt alleen voor mezelf gemaakt.

Eigenlijk is dit userscript dubbel werk voor de browser. Wanneer je een Hyves pagina laadt, zorgt het 'pager' Javascript, dat met de Hyves pagina meekomt, dat die karaktercombinaties worden vervangen door een plaatje. Kijk maar eens in de source van de pagina. Daarna draait pas het GreaseMonkey userscript (want zo werkt GreaseMonkey), dat vervolgens precies het tegenovergestelde doet. Het liefst zou ik eigenlijk dat hele 'pager' Javascript willen onderdrukken, wel zo efficient, maar ik weet (nog) niet hoe.

In hetzelfde userscript maak ik iemands BuddyPoke onzichtbaar, als hij die heeft - die is gewoon alleen maar irritant, weg ermee.

Wat ik nog wil doen is, om als iemand zo'n afgrijselijke krabbelaars afbeelding in de krabbels plaatst, deze ook onzichtbaar te maken, of te vervangen door een link in plaats van het plaatje te tonen.

Alleen al het idee dat ik zelf controle heb over wat ik wel en niet zie in een (Hyves-)pagina maakt, dat ik me al minder erger aan sommige van Hyves' infantiele dingen. Power to the user!

Geen opmerkingen: