Autor Zpráva
CZghost
Profil
V návodech na JPW jsou pouze základy JS a základní objektové situace, větvení tam sice je, ale jen letmo popsané, ty pokročilejší techniky tam chybí úplně.

Potřeboval bych zjistit, zda webová adresa není absolutní. Pokud není, odkazu se připíše událost onclick, která vyplivne oznamovací okýnko a zruší klikatelnost (stránka neexistuje).
Druhou možnost popíšu v tématu pro dvouřádkové menu.
Edit: Založeno
peta
Profil
Fajn, co mas hotove? Co jsi k tematu nasel googlem a neni ti jasne? Tema, udelejte za mne se jmenuje Prace a zakazky, jestli ocekavas hotovy vysledek?

Podle jakych pravidel chces zjistit, ze je adresa a kde, absolutni?
a = document.getElementsByTagName - vybere za stranky vsechny tagy A
a[0] - tag nula
a[0].href - url adresa v tagu 0

Jak zjistit, jestli je to adresa externi nebo interni? Zkusil bych hledat na zacatku v retezce http, ftp nebo jit na to opacne, hledat ./ nebo ../ a nebo cokoliv/, ktere se neshoduje s cokoliv:/ (pro http://) . Funkce str.indexOf, reg.match(str). Mel bys tez uvazovat, ze nekdo muze mit adresar http/ nebo ftp/ .
CZghost
Profil
peta:
Téměř hotový mám design a kontext stránky. Stránka má být ukázka nového vzhledu webu školy. Zjišťovat bych chtěl na všech odkazech webu, přičemž se mi nechce pořád psát jeden a ten samý příkaz pro každý odkaz. Jde to nějak úsporně (například přes while)?

Asi nemusím říkat, že absolutní adresa začíná http:// (nebo https:// pro šifrované spojení)... Šlo by na to v pohodě použít regulárního výrazu?

Akce by měla být taková, že na relativním odkazu se připíše skript zakazující přechod na stránku (neexistuje). Ještě vypíše hlášku o nepřístupnosti odkazu...
_es
Profil
CZghost:
Málo zrozumiteľne si popísal, čo chceš a z toho zrozumiteľného - prečo a čo vlastne riešiš v JS? To nevieš snáď už popredu, aké odkazy si tam sám dal? Prečo by mali byť „neabsolútne“ odkazy neplatné, viď URL » Relativní adresování.
CZghost
Profil
_es:
Protože odkazy vedou na neexistující soubory, které jsou pro ukázku vzhledu nepodstatné. Odkazy by tam ale měly být pro plnohodnotnou ukázku výsledné grafiky (odkazy se zabarvují, mění svůj styl při přejíždění)... To zrušení klikatelnosti má zabránit nevzhledné stránce 404, která ne každého úplně potěší... Když tak můžu vzít vzhled a napsat vlastní chybovku 404, která bude v souladu se vzhledem webu. Tu ale nebude možné zobrazit při kliknutí na odkaz vedoucí na neexistující soubor nebo adresář.

peta:
Dodatečně děkuju za nabídku funkcí, podívám se na ně...
_es
Profil
CZghost:
Tu ale nebude možné zobrazit při kliknutí na odkaz vedoucí na neexistující soubor nebo adresář.
Ale veď to predsa práve jej účel: ErrorDocument 404.
CZghost
Profil
_es:
Stránky nebudou na serveru. Tudíž nebude chybovka fungovat tak, jak by fungovala na serveru...
Chamurappi
Profil
Reaguji na CZghosta:
Stránky nebudou na serveru.
Takže nepotřebuješ rozeznávat absolutní/relativní adresy (což moc pohodlně nejde), stačí ti zablokovat odkazy vedoucí na protokol file:, je to tak?

Zkusil bych tedy něco jako tohle:
<body onclick="if((event.srcElement || event.target).protocol == 'file:') return false;">

Jinak do ukázek, u nichž zatím není jasné, kam budou odkazovat, se obvykle odkazům dává vycpávací href="#" nebo href="javascript:;".
CZghost
Profil
Chamurappi:
Tak o téhle funkci jsem neměl ani tušení. Moc děkuju, nastuduju si ten event target a rozhodnu se, zda využiju i ten srcElement...
Potom napíšu, zda jsem si vybral to či ono
Amunak
Profil
CZghost:
Použij to pokud možno přesně tak, jak to Chamurappi napsal. Zápisem (event.srcElement || event.target).protocol dosáhneš toho, že ten skript podporuje jak prohlížeče, co znají event.srcElement (většina + IE), tak ty, které znají event.target (většina + ostatní).
Chamurappi
Profil
Reaguji na CZghosta:
nastuduju si ten event target a rozhodnu se, zda využiju i ten srcElement
Zajímavé :-)
To logické „nebo“ nebylo určené pro tebe, ale pro prohlížeč.
CZghost
Profil
Amunak & Chamurappi:
Dobrá. Vyzkoušeno, funguje to...
Teď jenom, jestli načte také přímo vložené obrázky (CSS pozadí funguje bez problémů)...

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: