javascript:

Šiam įrašui sukūriau naują kategoriją: “blogis”. Neapsigaukite: blogis ne programavimo kalba, o protokolas, tiksliau pseudo protokolas, nes oficialiai protokolo javascript: nėra.

Niekada, niekada nuorodose nenaudokite href="javascript:".

Vienas labiausiai erzinančių dalykų, kai bendaršydamas viduriniu pelės mygtuku/ratuku sumaigai dėmesį atkreipusias nuorodas – jos atsidaro naujose kortelėse (tab’uose).
Eini skaityti ir randi tik tuščią langą ir adreso eilutėje besipuikuojantį “javascript:”.

Nenoriu dabar išsiplėsti apie naujų langų atidarymo pliusus ir minusus, bet jei jums laaaabai reikia naujo lango, padarykite civilizuotai. href attribute turi būti nuoroda į galutinį dokumentą: ar tai būtų didesnio formato paveikslėlis rodomas paspaudus ant sumažintos versijos, ar formos lauko aprašymas, rodomas iššokančiame lange paspaudus nuorodą “pagalba”.

Kai nuoroda veda tiesiog į dokumentą, niekas nesugriūva:

  • Nuorodos veikia net kai naršyklė nepalaiko Javascript arba tas palaikymas išjungtas.
  • Paieškos sistemos sugebės turinį rasti ir suindeksuoti.
  • Aš ir toliau galėsiu spragsėti vidurinį pelės mygtuką, o rezultatas neprivers sakyti kelių negražių žodžių.

Visišku blogiu javascript: pavadinti negaliu, nes, nors nuorodose jam vietos nėra, bet kai kur šis pseudo protokolas praverčia. Kalbu apie bookmarklets.

Va šis

javascript:(function(){
alert(document.getElementsByTagName('table').length)
})();
man iš karto pasako, kiek lentelių yra panaudota tinklalapyje. Jis neveiks, jei puslapis rėmeliuose (frames), bet tokiu atveju lentelių skaičiuoti ir nebereikia…

Užvakar visai netyčia pakliuvau į vienos lietuviškos kompanijos tinklalapį, kuriame visa navigacija suregzta būtent su tuo nelemtu javascript:. Suregzta ne bet kaip, o su fantazija, nes funkcija, kuri turi rodyti kažkokį puslapį realizuota window.content.location = 'somepage.html' motyvais. Trys skirtingos nuorodos – trys skirtingos funkcijos.

O firma tikrai ne nauja, bet kažkaip buvau ją pamiršęs. Javascript mano naršyklėje, lamei, veikia, tai panaršiau. Nuostabūs tekstai, nežinau, ką jie rūkė juos rašydami, bet, pasak Woody Alleno, verčiau tegul nebando to vežti per muitinę. Tiek daug buzzword’ų ir stantrumpų ir taip mažai prasmės vienoj vietoj senokai neteko matyti. Akivaizdu, kad šios knygos jie neskaitė (labai gera knyga, rekomenduoju). O gal aš tiesiog per kvailas suprasti tokius dalykus kaip “We are creating innovation because of innovation”.

Žinote ką, vaikinai, jei tokia navigacija yra inovacijos pavyzdys, tai grabe aš mačiau tokią inovaciją.

18 Responses to “javascript:”

  1. asterisk Says:

    O taip pilnai pritariu, berods sprendimas būtų įdėti nuorodoje ‘onclick’ option’ą. Niekas labiau neerzina kai spusteli open in new tab ir tau atverčia javascript:…

  2. Sergej Kurakin Says:

    Visiškai su Jumis sutinku, Rimantai. Labai geras pastebejimas ne tik LT internetui, bet ir kitai daliai pasaulio, kuri į href atributą deda tuos užknisusios “javascript:” ir trukdo pažengusiems interneto vartotojams atidaryti nauja tabą ar langą.

    Iš kitos puses iš to puikiai galima spresti apie kureju žinias.

  3. vytenis Says:

    meldžiuosi, kad tavo balsas, dievui į ausį.. :)

  4. Drex Says:

    del js pilnai sutinku, bet sudomino:

    “Užvakar visai netyčia pakliuvau į vienos lietuviškos kompanijos tinklalapį, kuriame visa navigacija suregzta būtent su tuo nelemtu … ”

    idomu kas per kompanija :)

  5. Emilis Says:

    Mano supratimu visada reikia herojus nebijoti pristatyti vardais ;-).

    Tai aš spėju, kad ta labai “inovatyvi” įmonė — Megalogika

  6. Rimantas Says:

    Na nežinia, kiek jie piktybiški, tik nelaiku ir ne vietoje pasitaikė, kaip tik tada, kai ruošiausi apie tai rašyti. Yra blogesnių :(

  7. Vaidas Says:

    Bet kartais tenka taip daryt. Pvz yra javascript funkcija, kuri “slepia” e-mail’o adresą nuo spambotų naršančių tavo saite. Tai nežinau kaip kitaip įgyvendint linką mailto: … Manau tai tik vienintelė išimtis, kitais atvejais tai yra nesąmonė. Nebent darai popup’ą iš fliašo bet ten jau ir taip naujam tabs’e neatidarysi :)

  8. Rimantas Says:

    Na, mailto:, žinoma, specifinis atvejis, bet čia jau požiūrio klausimas.
    Mano atrodo, kad toks slapstymasis nuo spamerių tai daugiau saviapgaulė, el. pašto adresas į jų rankas gali pakliūti daugybe būdų. Mano adresas išbarstytas po visą internetą, bet nepasakyčiau, kad kenčiu dėl spamo. Aišku, čia ir gmail nemažai prisideda (abu mano nedarbiniai adresai nukreipti į gmail). Kas neturi rimtos apsaugos nuo spamo, gal adreso slėpimas ir yra kažkiek efektyvu. Nors slėpdamasis nuo problemos jos neišspręsi…

  9. Robertas Aganauskas Says:

    Tiap, opi ir erzinanti problema ;)
    Tai kad Megalogika savo svetainėje naudoja javascript’ą navigacijai, manyčiau, nieko baisaus. Tarkim, tai jų “dizaino” sprendimas ;)

    Tačiau tokioms svetainėms kaip vpu.lt (Vilniaus Pedagoginis Universitetas) arba fd.lt (Farmacijos Departamentas) dėl jų prigimties (dideli informacijos kiekiai, poreikis lyginti informaciją) normali (ne JavaScript’inė) navigacija yra tiesiog kritiška.

    Tada tikrai užknisa ;)

  10. Robertas Aganauskas Says:

    Sorry, prie tikrai užknisa nuorodos dėti ne ketinau, tiesiog blogo varikliukas href’ą su javascript interpretavo kaip nuorodą.

  11. Rimantas Says:

    Robertai, tavo minėtas svetaines ištiko prakeikimas vardu SmartWeb. Jei pereitum per SW naudojančių svetainių sąrašą – nemažai perliukų rastum. Vien www,socmin.lt ko verta!

  12. Vaidas Says:

    Na, sutinku. Spam filtrai yra būtinas dalykas, bet niekad nepakenks papildoma apsauga. Gal ir ne tinkamiausias pavizdys, bet kai vagis įsilaužinėja į butą, kuo daugiau spynų tuo jis ilgiau sugaišta :) Žinoma, viskas turi būti proto ribose…

  13. Donatas Says:

    nesupyktumet jai as sia informacija panaudociau savo wap svetaineje?

  14. Foo Says:

    Tikiuosi htmlspecialchars :)
    Foo
    Kartais tikrai pravercia.

  15. Foo Says:

    :) Nors ir skaiciau Roberto komentaro kazkodel tikejausi stebuklo..
    <a href=”link.html” onclick=”alert(’Clicked’); return false;” >Link</a>
    Esu uzsispyres.

  16. Foo Says:

    Arba nesusilaikau neparases eilerastuko gal net visai ne vietoj :)

    <a href=”no_script.html” id=”lnk” onclick=”return false”>Scripted</a>

    document.onload = function() {
        document.getElementById(’lnk’).addEventListener(’click’, scripted, false);
    }

  17. linas Says:

    o kam reikalingi tarpautiniai zodziai?
    Tarpkulturinis bendravimas (ypac globalizacijos ashroje) yra labai sunkus ir biznio zmones sneka kaip idijotai vien todel, kad japonui paduota vizitine kortele ne dviem rankomis reiskia jo izeidima, jei pagavai ka turiu galvoje.
    Nuosirdzius rasinelius savo puslapiuose gali rashuti karstadirbiai, o it kalba turetu buti kodu surashymas, nes taip surashai kondensata, o ne skiedala.
    del tabu sutinku - bet dizainas to reikalavo. kitavertus nera cia “tabinis” puslapis. Tai nera informacijos sklaidimas - tai uosline komunikacija ;)

  18. Rimantas Says:

    Tarptautiniai žodžiai skiedalo kondensatu, deja, nepadaro.
    “dizainas to reikalavo” - atsiprašau, bet toks posakis man reiškia savo amato neišmanymą.
    Neįsivaizduoju dizaino, kuris reikalautų “javascript:”. Tą patį efektą galima realizuoti kultūringai, galima ir belekaip.

  19. Lukas Says:

    na net ir citrus vietoj target:blank naudoja javascript:… :)

    http://www.mvisata.lt/lt/tv/search?query=&filter=lt%2Ftv&x=7&y=13

    (virsuj, salia EN, Rekomenduok draugui ikona)

Leave a Reply