Sovelluskirjanmerkki

**Sovelluskirjanmerkki** (eli **kirjanmerkkisovelma** eli **toimintokirjanmerkki**, engl. **bookmarklet**) on selaimen kirjanmerkkeihin tallennettava pieni sovelma, jonka toiminta on tallennettuna kirjanmerkin URI-osoitteeseen. Tavallisesti sovelluskirjanmerkki on JavaScript-sovellus.

Sovelluskirjanmerkin englanninkielinen nimi, *bookmarklet*, on sanojen *bookmark* ja *applet* sulauma eli suomeksi *kirjanmerkki* ja *sovelma*. Tällä menetelmällä se olisi suomeksi *kirjanmerkelmä*.

Sovelluskirjanmerkin avulla voidaan selaimeen tai verkkosivuun lisätä kertanapsautuksen toiminnallisuutta joko kirjanmerkitse tai verkkosivun linkitse. Sovelluskirjanmerkkiä napsauttaen suoritetaan tietty toiminto, esimerkiksi Etsi-toiminto tai sivun tiedon poiminto.

## Toiminnallisuus

URI-osoitetta käytetään verkkoselaimessa `A`-tunnisteen `href`-määreessä sekä niin ikään kirjanmerkeissä.
URI-osoitteen ensimmäinen osa, kuten `http:`, `file:` tai `ftp:`, valitsee käytettävän yhteyskäytännön sekä määrittää rajoitteet lopulle merkkijonoa. Selaimet toteuttavat myös `javascript:`-liitteen, joka on selaimen jäsentimen silmissä kuin mikä tahansa muu URI-osoite. Sisäisesti selain näkee kyseessä olevan *javascript*-yhteyskäytäntö, ja kohtelee merkkijonoa JavaScript-koodina. Suoritettuaan koodin selain käyttää sen jätöksiä uuden sivun sisältönä.

Suoritettavalla komentojonolla on käsillä olevaan sivuun täysi pääsy ja se voi lukea ja muokata sitä. Mikäli komentojono palauttaa merkkijonon asemesta määrittelemättömän tyypin, selain ei lataakaan uutta sivua, vaan komentojono suoritetaan käsillä olevan sivun sisällölle.

Tämä mahdollistaa sivua uudelleenlataamatta esimerkiksi salaman nopeat kirjasinkoon ja -värin muutokset.

## Käyttö

Sovelluskirjanmerkki tallennetaan tavallisena kirjanmerkkinä ja sitä käytetään tavallisen kirjanmerkin tapaan. Siten ne ovat yksinkertaisesti toimintoja selaimeen lisääviä, yhden napsautuksen työkaluja.

Esimerkiksi seuraavat toimet ovat mahdollisia sovelluskirjanmerkkien avulla:

* Verkkosivun ulkonäköön vaikuttaminen selaimesta käsin (esimerkiksi kirjasinkoon muuttaminen, taustavärin vaihto).
* Tietojen poimiminen verkkosivulta (esimerkiksi hyperlinkkejä, kuvia, merkkijonoja).
* Videotiedostojen lataaminen verkkosivulta (esimerkiksi YouTube-palvelusta).
* Hakukonehaun suorittaminen valittuna olevan tekstin pohjalta tai käyttäen valintaikkunaa.
* Nykyisen sivun lähettäminen validointipalveluun tai käännöspalveluun.
* Yleisten määritysasetusten asettaminen silloin kun sivu ei itse tarjoa mahdollisuutta asetusten muokkaamiseen.

Sovelluskirjanmerkki asennetaan luomalla uusi kirjanmerkki ja liittämällä tarvittu koodi kirjanmerkin luonti-ikkunan kohdeosoitekenttään. Sovelluskirjanmerkin voi suorittaa lataamalla kirjanmerkki normaalisti.

## Tausta

Steve Kangas bookmarklets.comista keksi termin "bookmarklet". Hän rupesi luomaan sovelluskirjanmerkkiä Netscapen JavaScript-oppaan esittämän idean pohjalta. Aluksi käytettiin termiä **favelet**; esimerkiksi Tantek Çelik käytti sitä 6. elokuuta 2001 sähköpostiviestissään. Brendan Eich, Netscapen JavaScript-kehittäjiä, kuvasi sovelluskirjanmerkkien alkuperää näin:

## Esimerkki
Tämä esimerkinomainen sovelluskirjanmerkki suorittaa Wikipedia-haun minkä tahansa selainikkunassa valittuna olevan tekstin pohjalta. Normaalikäytössä seuraava JavaScript-koodi asennettaisiin kirjanmerkiksi selaimen kirjanmerkkipalkkiin. Siitä lähtien sovelluskirjanmerkin napsauttaminen minkä tahansa tekstinpätkän valitsemisen jälkeen suorittaa haun.

``

## Lähteet

## Aiheesta muualla

* Marklets.com - Bookmarklet Directory  - Laajin käyttäjävoimin ylläpidetty sovelluskirjanmerkkihakemisto.
* Bookmarklets.com - Ensimmäisiä sovelluskirjanmerkkikokoelmia.
* Jesse's Bookmarklets Site - Ensimmäisiä sovelluskirjanmerkkikokoelmia.
* Bookmarklets Boost Web Surfing , *[http://pcmag.com PC Magazine]*, Tara Calishain, 2004-03-04.  Haettu 2007-08-31.
* How to Use Is.Gd/Tiny Url/Bookmarklet-X in Chrome  - Tehokas tapa Google Chrome-sovelluskirjanmerkkien luontiin, 2009-06-01. Haettu 2009-07-18.