Autor Zpráva
147477
Profil
Zdravíčko,

věnuji se tvorbě soukromého webu s účelově minimálním počtem návštěvníků, takže v podstatě neznám žádných hranic.

Vzhledem k tomu, že stránky jsou postaveny na JavaScriptu, je pro tu hrstku čtenářů nutnost mít jej zapnutý.

Každopádně mi jde o to, aby na main page proběhl test na JavaScript a buďto se zobrazil klikatelný obrázek pro vstup, nebo statický spolu s textem, že JS je vyžadován.

Samozřejmě znám párový tag <noscript>, ale netuším, jak docílit toho, aby se část stránky (klikatelný obrázek dělaný na bázi onmouseover a onmouseout) při vypnutém JS vůbec nezobrazila, resp. se zobrazil náhradní.

Mohl by mi tu někdo poradit? Děkuji.
Chamurappi
Profil
Reaguji na 147477:
Nejtriviálnější postup je vyrobit ten klikatelný obrázek také skriptem. Nebo ho zviditelnit z jinak výchozího neviditelného stavu.
147477
Profil
Vyrobit klikatelný obrázek také skriptem?

Problém je, že funkce onmouseover (stejně tak onmouseout) nevyžaduje tag <script> a lepší prohlížeče to bůhvíjak rozpoznají a správně vyhodnotí i s vypnutým JavaScriptem. Kdyby se to dalo obalit tím tagem, předpokládám, že by to klient za dané okolnosti automaticky ignoroval.
Louka
Profil
Chamurappi to nejspíše myslel zhruba takto:
<script>
document.write("<img src='...' onmouseover='...'>");
</script>

<noscript>Je vyžadován zapnutý JS.</noscript>
147477
Profil
To vypadá zajímavě. Takže původní hodnoty se dají obalit do tagu <script>, když se před ně napíše příkaz document.write?

Ještě dnes to otestuju a dám vědět.
peta
Profil
<style>.nojs {display: none;}</style>
<div id=ahoj class="nojs">Skryty div</div>
<script>document.getElementById('ahoj').className = ''; /* smaz class */</script>
147477
Profil
Tak zatím mi Chrome ani Firefox script nepoznají, žádný obrázek se nezobrazí, ať je JS zapnutý nebo vypnutý. Kde mám chybu?


<script>
document.write("<p style=\"text-align: center;\"> <a href=\"http://web.cz/folder/index.html\"
onMouseOut=\"self.document['obr1'].src='enter_1.png';\"
onMouseOver=\"self.document['obr1'].src='enter_2.png';\">")
document.write("<img name=\"obr1\" src=\"enter_1.png\" border=\"0\">")
document.write("</a>")
</script>
Someone
Profil
nikde nemáš zakončeno středníky: document.write("");
147477
Profil
Ještě u toho mám:

<script type="text/javascript" language="JavaScript"> <!--
var obr_1 = new Image();
obr_1.src = 'enter_2.png';
// --> </script>

Ty středníky stačí jen za závorkami ") ?
_es
Profil
147477:
V textovom reťazci v JS nemôže byť zalomenie riadka. Ak ho tam treba, tak sa musí vložiť ako dvojica znakov \n.
147477
Profil
Tak je to výborný, všechno funguje jak má. Akorát mne mrzí, že se zapnutým JS se při přesměrování stránky skrz window.location.replace na zlomek sekundy zobrazí text, který je v tagu <noscript>, a tudíž by neměl být vůbec vidět. Je toto možné nějak zafixovat?


Dočetl jsem se, že to jde vyřešit přes tag <div> a příkaz display: none, ale stejně mi to nefunguje - text se stále na moment zobrazí, což je nežádoucí.

<div> 
<script>
document.write("<p style=\"display: none\">");
</script>
<p style="text-align: center;"> <b> Je vyžadován zapnutý JS. </b> 
</div>
147477
Profil
peta:
Jsem to ale vůl. Nějak jsem tento užitečný příspěvek přehlídl, díky!
147477
Profil
Tak jsem byl nucen se vrátit k sestavení [#11], protože ten kód od peta bohužel vůbec nic nevyřešil (skrytý text byl se zapnutým JS stále vidět), pouze došlo k chybnému vycentrování stránky (převážná část webu je na střed, tohle stánku zarovnalo doleva, což nevypadá pěkně).

Používám Chrome a testoval jsem to i ve Firefoxu. Jak bych měl kód modifikovat, aby fungoval?


Jak prosté...

Z (nefunkčního) pseudokódu

<div> 
<script>
document.write("<p style=\"display: none\">");
</script>
<p style="text-align: center;"> <b> Je vyžadován zapnutý JS. </b> 
</div>

stačilo mírnou úpravou udělat (plně validní) kód:

<div> 
<p style="text-align: center;"> 
<script>
document.write("<p style=\"display: none\">");
</script>
<b> Je vyžadován zapnutý JS. </b> 
</div>
peta
Profil
147477:
"skrytý text byl se zapnutým JS stále vidět"
Samozrejme, tak to melo fungovat, podle puvodniho dotazu. Pri vypnutem skryte, pri zapnutem objevene. Tak jsi to pozadoval.
"při vypnutém JS vůbec nezobrazila"

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: