Autor Zpráva
xlifer
Profil
Když chci vyvolat událost, tak jaký zápis je správně? S "javascript:" na začatku (1) nebo bez (2) ?

Funguje obojí, ale jak je to vlastně správně netuším. Je mi jasné, že lze odkazat přímo do javascriptu funkci(); , ale takhle mi to přijde pohodlnější, když můžu událost vyvolat ihned v rámci zapisu tagu a nemusím odkazovat na JS kód, který je jinde.

1.
<span onClick="javascript:document.form.hodnota.focus();">nastav pole</span>

2.
<span onClick="document.form.hodnota.focus();">nastav pole</span>
weroro
Profil
javascript: je protokol podobne ako http: alebo ftp: a používa(l) sa v atribúte href="" značky <a>.
Str4wberry
Profil
Jenom doplním, že v případě použití <span>u je nutné přidat atribut tabindex, aby šlo prvek zaměřit z klávesnice.
_es
Profil
To javascript: tam nepatrí. Funguje to aj s ním preto, že ide o nevyužité návestie (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label). Patrí to do atribútu href, ako označenie pseudoprotokolu - kódu v JS.
Chamurappi
Profil
Reaguji na xlifera:
Kdysi dávno se vymyslelo, že World Wide Web stojí na třech pilířích: HTML, HTTP a URL. Vše ostatní je zbytné, nahraditelné, stavebnicové. Stejně jako obrázky můžou být mnoha typů (a žádný není dominantní), i u stylů a skriptů se očekávalo více navzájem nekompatibilních krvežíznivě soupeřících formátů.

Dříve, než W3C zkusilo prosadit, že se každý webový formát označí MIME typem (při čemž typ text/javascript se dlouho nikdo neobtěžoval dodefinovat), si prohlížeče našly jinou cestu, jak určit používaný skriptovací jazyk. Elementy <script> mívaly atribut language (místo type), u atributů se objevoval takovýto prefix (místo hlavičky Content-Script-Type). V Exploreru existoval na určení skriptovacího jazyka i globální atribut language, ovšem ten nikdy nebyl moc pochopen.

Pokud vím, JavaScript byl vždy a všude jako výchozí, nikdy ho nebylo nutné výslovně deklarovat. Do jisté míry se společně s CSS staly čtvrtým a pátým pilířem, konkurence k nim reálně neexistuje.

Dnešní prohlížeče javascript: v atributu události už vůbec neuznávají. Berou ho jako (neškodný) návěští pro skoky. Kdybys měl uvnitř onclicku víc cyklů v sobě, mohl bys ve vnitřním cyklu příkazem break javascript ukončit všechny najednou :-)
Jinými slovy je zcela zbytečné to psát. Před dvaceti lety to byl jen syntaktický cukr, dnes to není vůbec nic.
_es
Profil
Chamurappi:
Dnešní prohlížeče javascript: v atributu události už vůbec neuznávají...Před dvaceti lety to byl jen syntaktický cukr, dnes to není vůbec nic.
Myslel som si doteraz, že to tak aj je. No vyskúšal som, že v IE8:
<div onclick='vbscript: MsgBox "test"'>pokus<div>
kupodivu funguje ako kód vo VBScripte. Ešte divnejšie je, že tam funguje aj:
<script>MsgBox "test"</script>
Chamurappi
Profil
Reaguji na _es:
Asi jsem měl použít spíš pojem „nové prohlížeče“.
Ve starším Exploreru je tuším nějaká primitivní autodetekce jazyka pro první <script>. Teprve někdy ve verzi 10 začala podpora VBScriptu radikálněji odumírat.
Mělo by být možné nainstalovat do Windowsu (a tím pádem i do Exploreru) i nějaký další skriptovací jazyk, vždycky mě zajímalo, jak to funguje, ale nikdy jsem to nevyzkoušel. Pak je otázka, jestli by zafungovalo název:
_es
Profil
Chamurappi:
Ve starším Exploreru je tuším nějaká primitivní autodetekce jazyka pro první <script>
Vyskúšal som - prvý <script> s JS naruší funkčnosť <script>MsgBox "test"</script> a aj <div onclick='MsgBox "test"'> (aj to môže fungovať). No s vbscript: to v HTML atribúte funguje.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: