Tijdschrift voor webwerkers » Artikel #66
Bookmarklets, ook wel favelets genaamd, zijn een speciaal soort bookmarks of favorieten. In plaats van http://-adressen van websites bevatten ze javascript:-urls. Door een bookmarklet aan te klikken wordt de betreffende Javascript-code uitgevoerd op de huidige pagina.
Dit artikel bestaat uit een opsomming van bookmarklets die handig zijn bij het bouwen en ontwerpen van een website. Ze geven informatie over (elementen van) de huidige pagina of bieden manieren om het uiterlijk van de pagina ‘live’ te beïnvloeden, ter analyse of inspiratie.
Maar eerst gaan we eens bekijken hoe zo’n bookmarklet eigenlijk werkt. Zo kun je ze zelf bouwen en anderen helpen met een handig stuk gereedschap.
De enige vereiste voor het bouwen van een bookmarklet is kennis van Javascript. De volgende twee voorbeelden geven een indicatie van de procedure en waar je zoal op moet letten.
Het veranderen van de achtergrondkleur van een pagina naar een kleurwaarde naar keuze kan in Javascript met het volgende commando:
document.body.style.backgroundColor = prompt('Kleur:','green');
Om dit op de huidige pagina uit te voeren typen we het volgende in de adresbalk:
javascript:void(document.body.style.backgroundColor = prompt('Kleur:','green'));
Om het commando staat void() zodat de return-waarde genegeerd wordt; als we void() zouden weglaten zou de hele pagina vervangen worden door de ingetikte kleurwaarde.
Op veel pagina’s zal de code geen effect hebben, omdat er een achtergrondpatroon is ingesteld dat de achtergrondkleur verbergt. Om dat achtergrondpatroon tegelijkertijd te verbergen breiden we de code uit tot:
javascript:void(document.body.style.backgroundColor = prompt('Kleur:','green')); void(document.body.style.backgroundImage = 'none');
wat ingekort kan worden tot:
javascript:with(document.body.style){ void(backgroundColor=prompt('Kleur:','green'), backgroundImage='none');}
Nu willen we deze bookmarklet natuurlijk bewaren. Internet Explorer maakt dat heel makkelijk: plak de code in de adresbalk en sleep het pagina-icoon dat aan het begin van de adresbalk staat naar het links-menu. Vervolgens nog even de link een herkenbare naam geven zoals ‘verander achtergrondkleur’ en we zijn klaar.
We zijn tevreden over onze bookmarklet en willen hem wereldkundig gaan maken. En dat willen we zó doen dat mensen zelf de bookmarklet makkelijk kunnen installeren. Daarvoor gebruiken we de volgende html-code:
<a href="javascript:with(document.body.style){ void(backgroundColor=prompt('Kleur:','green'), backgroundImage='none');}">
verander achtergrondkleur</a>
(sleep naar links-menu)
wat er uit komt te zien als:
verander achtergrondkleur
(sleep naar links-menu)
Let erop dat bij het opnemen van de code in een href
zoals we hier doen niet zomaar alle javascript-karakters gebruikt mogen worden. Vervang de volgende karakters door hun bijbehorende entiteiten om o.a. problemen met valideren te voorkomen:
<
wordt <
>
wordt >
&&
wordt &&
"
wordt "
We willen een bookmarklet schrijven dat laat zien welke html-tags er in de pagina gebruikt worden en hoe vaak elke tag voorkomt. Voor een complexer bookmarklet zoals dit is het handig om de Javascript-code uit te schrijven in een text-editor zoals Notepad, in plaats van alles direct in de adresbalk te typen.
De benodigde code ziet er als volgt uit:
// maak array van alle elementen
alltags = document.getElementsByTagName('*');
// loop door alle elementen en houd telling bij
// in array tagcount
tagcount = [];
for (i=0; i<alltags.length; i++)
{
if (tn = alltags[i].tagName)
{
if (!tagcount[tn]) { tagcount[tn] = 0; }
tagcount[tn]++;
}
}
// loop door array tagcount en genereer overzicht
msg = '';
for (i in tagcount)
{
msg += tagcount[i] + '\t' + i + '\n';
}
// toon gegenereerde overzicht
alert('#\tused tags\n'+msg);
We maken er één regel van, laten alle comments weg en plaatsen void() om alle commando’s heen die een waarde teruggeven. Nu kunnen we de code in de adresbalk plakken en testen:
javascript:void(alltags=document.getElementsByTagName('*'), tagcount=[]); for (i=0; i<alltags.length; i++) { if (tn = alltags[i].tagName) { if (!tagcount[tn]) { void(tagcount[tn] = 0); } void(tagcount[tn]++); } } void(msg = ''); for (i in tagcount) { void(msg += tagcount[i] + '\t' + i + '\n'); } void(alert('#\tused tags\n'+msg));
De code blijkt te werken, dus we bewaren de bookmarklet door het adresbalk-icoon naar het links-menu te slepen, en publiceren het als volgt (let op de vervanging van ‘<’ door ‘<’ in de for-loop):
<a href="javascript:void(alltags=document.getElementsByTagName('*'), tagcount=[]); for (i=0; i<alltags.length; i++) { if (tn = alltags[i].tagName) { if (!tagcount[tn]) { void(tagcount[tn] = 0); } void(tagcount[tn]++); } } void(msg = ''); for (i in tagcount) { void(msg += tagcount[i] + '\t' + i + '\n'); } void(alert('#\tused tags\n'+msg));">count tags</a> (sleep naar links-menu)
Resultaat:
count used tags (sleep naar links-menu)
En dan nu een groot aantal kant-en-klare bookmarklets. De meesten kun je testen door gewoon op de link te klikken. Het installeren van een bookmarklet is verder slechts een kwestie van slepen van de link naar het bookmarks- of favorietenmenu van je browser. Het kan handig zijn om je bookmarklets te verzamelen in één subfolder in je links-menu (subfolders van het links-menu worden automatisch een uitklapmenu).
Let op: na het klikken op sommige van de bookmarklets zal de pagina gereload moeten worden om deze weer normaal te kunnen lezen.
800x600 en
640x480
Twee bookmarklets die het huidige browservenster verkleinen, om te testen hoe een pagina er (ongeveer) uit zal zien op een scherm van lagere resolutie.
ancestors
Zorgt ervoor dat bij het bewegen van de muis over een element een melding van de vorm HTML > BODY > P.inhoud > A in de statusbalk verschijnt, om de positie van het element in de documentstructuur weer te geven.
classes
Opent een popup met een overzicht van alle gebruikte css classes en het aantal keer dat ze in de broncode voorkomen.
cookies
Toont een overzicht van alle cookies en hun waardes.
Edit Page (alleen Internet Explorer)
Maakt de hele inhoud van de huidige pagina wijzigbaar, gebruik makend van de ingebouwde WYSIWYG edit-mogelijkheid van Internet Explorer. Tekst kan aangepast of uitgebreid worden, de grootte van divs of tables kan aangepast worden, plaatjes kunnen versleept worden of zelfs vanuit een ander venster er in gesleept worden.
elInfo
(alleen Internet Explorer)
Vergelijkbaar met ancestors, maar toont de html-code van het element waar overheen bewogen wordt, in de vorm <a href="http://site/" class="menu">naam</a>.
FlipH,
FlipV en
FlipHV (alleen Internet Explorer)
Deze bookmarklets tonen de pagina respectievelijk horizontaal gespiegeld, verticaal gespiegeld en 180 graden geroteerd.
form values
Opent een nieuw venster met een overzicht van alle formuliervelden (zichtbaar of verborgen) en hun waardes.
forms target _blank
Verandert de target-parameter van alle formulieren naar _blank, zodat elk formulier in een nieuw venster opent bij het versturen. Handig als je herhaaldelijk de werking van een formulier wilt testen zonder telkens alle waardes opnieuw in te moeten vullen.
grid
Plaatst een 50x50 grid-patroon over de gehele pagina. Klik opnieuw om te verbergen.
Gray (alleen Internet Explorer)
Maakt de hele pagina zwart-wit.
Image Drag (alleen Mozilla)
Zorgt ervoor dat alle plaatjes in de pagina naar een willekeurige plek versleept kunnen worden.
images info
Opent een nieuw venster met een opsomming van alle plaatjes op de huidige pagina, met volledig pad, breedte en hoogte en (in Internet Explorer) de bestandsgrootte.
Invert (alleen Internet Explorer)
Toont de hele pagina in negatieve kleur.
lineDraw (alleen Internet Explorer)
Plaatst een transparante iframe over de pagina waarin met de muis willekeurige vormen getekend kunnen worden. Handig voor conceptbesprekingen. Klik opnieuw om de getekende lijnen te verbergen.
show classes and ids (alleen Mozilla)
Voegt aan elk element in de pagina een labeltje toe met de class en/of id waarde (indien aanwezig).
show divs and spans
Plaatst een stippellijn om elke <div> en <span> in de pagina.
show specific elements
Vraagt om een elementnaam en plaatst een border om alle plaatsen in de pagina waar dat specifieke element voorkomt.
ruler for IE
en
ruler for Mozilla
Maakt het mogelijk om met de muiscursor een vierkante selectie te trekken, waarvan de breedte en hoogte getoond worden. Handig om de dimensies van elementen te meten.
test styles (alleen Mozilla)
Opent een nieuw venster waarin je willekeurige CSS regels kunt typen, die direct toegepast worden op de originele pagina.
used colors
Opent een nieuw venster met een overzicht van alle gebruikte (hex)kleurwaarden.
Validate This Page
Stuurt de url van de huidige pagina naar de W3C Validator.
XY
Toont de huidige muiscoördinaten in de statusbalk.
Zoom in en Zoom out (alleen Internet Explorer)
Deze twee bookmarklets vergroten en verkleinen de gehele pagina (plaatjes, tekst, alles).
Zoals je ziet zijn er veel verschillende nuttige bookmarklets, die heel handig kunnen zijn in je dagelijks werk als webdesigner en waar je uitgebreid gebruik van kunt maken. Als je zelf een goed idee hebt voor een bookmarklet kun je je collega’s misschien wel een groot plezier doen door zelf een nieuwe bookmarklet te bouwen en beschikbaar te maken! De onderstaande links helpen je daarbij verder op weg.
Tevens programmeur van WHEDONesque.
Publicatiedatum: 3 november 2003
Naar Voren is op 18 juli 2010 gestopt met publiceren. De artikelen staan als een soort archief online. Het kan dus zijn dat de informatie verouderd is en dat er inmiddels veel betere of makkelijkere manieren zijn om je doel te bereiken.
Copyright © 2002-heden » NAAR VOREN en de auteurs