Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Modrá je dobrá
zelená je lepší

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub JavaScript [ŽP: neomezená] (kategorie Programování) moderuje Šéf Lopuchu.
Archiv
- http://al3x.3web.cz/js/ - najdete zde zaklady javascriptu je tam i docela dobre vysvetleny cookies
- specifikace ECMAScriptu - standard založený na JavaScriptu a JScriptu.
Download Opera
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: rsqjirp
[ 398 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
wronski Wronski Jsou to zrůdy. - Sofistikované. 23.5.2011 20:04  619
huh [617]: Dík, jdu to projít.

Mně se líbil ten tvůj zvýrazňovač na C++. Když jsem se ptal v lopuších scriptech, jestli není něco na php, tak nikdo nereagoval, takže jsem se toho včera chopil... (Zatím to mám takhle.) Problém je, že neumim javascript :)
huh huh 23.5.2011 20:03  618
David11 [614]: Treba tohle mi funguje jak v FF tak IE:
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE></TITLE>
<script >

function testZobraz(jeResize)
{                                                                                                           
document.getElementById('PREPOCTI').innerHTML = "<a href='javascript:history.back()'> <img src=test.jpg width='200%' alt='zpět' border='0'> </a>";
if (!jeResize) document.write("<nobr><div id='ID_FIXUJ'> TESTOVACI_RETEZEC </div></nobr>");                   
}

</script>
<style>
#ID_FIXUJ {position: 'absolute';}
#ID_FIXUJ {top: 0px; left: 12px}
#ID_FIXUJ {font-family: Arial; font-size: 10px}
</style>
</HEAD>
<BODY
onresize="testZobraz(true)">
<div
id="PREPOCTI"><br>
</div>
<script>
testZobraz(false);
</script>
</BODY>
</HTML>
Ale prijde mi to osklivy, spousta toho javaskriptu je IMHO naprosto zbytecna (ted mam hlavne na mysli tu skutecnou galerii), ty tlacitka (odkazy) je naprosto zbytecny generovat javaskriptem, document.all nekomentuji :-), vsechno to document.write vyhazet. Napis toho maximum v HTML a v JS se pak jen napoj na udalosti, ktere chces obslouzit.
huh huh 23.5.2011 19:16  617
Wronski [615]: Hehe, tady se nekdo snazi napsat zvyraznovac syntaxe pomoci regularnich vyrazu :-) Oni se na to ale moc nehodi, pokud chces osetrovat takovehle detaily. Pripadne pouzij tohle.
wronski Wronski Jsou to zrůdy. - Sofistikované. 23.5.2011 17:00  615
Snažím se udělat filtr (nevím, jak se tomu správně říká) na nějaké výrazy (něco jako s = s.replace(/\&/g, '&amp;');)

Příklad:
filtr 1: obsah v uvozovkách = <i>obsah v uvozovkách</i>
filtr 2: nějaké_slovo = <b>nějaké_slovo</b>

Jak mám zapsat "pokud je nějaké_slovo v uvozovkách, neproveď filtr 2"? Resp. to asi bude "pokud neodpovídá filtru 1, proveď filtr 2". Ale poradí mi někdo, jaký bude konkrétní zápis?
david11 David11 - Bilbo..and the mouse police never sleeps 23.5.2011 16:20  614
Tady je kód, který se chová tím dříve popsaným způsobem.
Je to tam napsané pro IE (position:'absolute')

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE></TITLE>
<script src="../../funkce.js"></script>
<style>
#ID_FIXUJ {position: 'absolute';}
#ID_FIXUJ {top: 0px; left: 12px}
#ID_FIXUJ {font-family: Arial; font-size: 10px}
</style>
</HEAD>
<BODY
onscroll="testFix('ID_FIXUJ')"
onresize="testZobraz(true)"
id="PREPOCTI">
<script>
testZobraz(false);
</script>
</BODY>
</HTML>

function testFix(id)
{
if(document.all)
{ document.all[id].style.pixelTop = document.body.scrollTop + 0
document.all[id].style.pixelLeft = document.body.scrollLeft + 12;
}
}

function testZobraz(jeResize)
{
document.getElementById('PREPOCTI').innerHTML = "<a href='javascript:history.back()'> <img src=test.jpg width='200%' alt='zpět' border='0'> </a>";
if (jeResize)
{ //javascript:location.reload(false);
}
else
{ document.write("<nobr><div id='ID_FIXUJ'> TESTOVACI_RETEZEC </div></nobr>");
}
}

Když je tam zaremovaný ten řádek
javascript:location.reload(false);
je třeba vyvolat reload stisknutím tlačítka Reload v prohlížeči - pak se teprve zobrazí TESTOVACI_RETEZEC. Když uživatel změní velikost okna, TESTOVACI_RETEZEC zmizí, objeví se ale po stisku tlačítka Reload.

Pokud ten řádek
javascript:location.reload(false);
odremujete, TESTOVACI_RETEZEC se objevuje automaticky (přesně tak jak potřebuji). Ovšem jen v IE.

Pokud
#ID_FIXUJ {position: 'absolute';}
zaměníte za
#ID_FIXUJ {position: fixed;}
a zkusíte to samé ve FF, TESTOVACI_RETEZEC se při odremovaném reload() neobjevuje (to je ten prvotní problém, který mě ve FF vadí), musí se vždy reloadovat ručně.

Když se parametr jeResize vždy nastaví na false, vůbec se tam neobjeví bitmapa a TESTOVACI_RETEZEC ani nemá nastaven font Arial.
(Kvůli tomu jsem tam dával ten parametr jeResize a v IE s ním vše funguje OK, ve FF to ale ten reload() nezavolá.)

Můžete mi prosím poradit co dělám špatně?
Díky.
david11 David11 - Bilbo..and the mouse police never sleeps 23.5.2011 12:42  613
huhAno, reloadem je myšlen location.reload() a nejde o framy.
Nevím proč se to tak chová, ale fakt si nevymýšlím : - )

Asi bych měl primárně přijít na to, proč to (jak v IE, tak ve FF) při onresize při pokusu o vykreslení bitmapy a následném vykreslení menu, havaruje - tam asi bude zakopaný pes, to reload() je pak už jen "ochcaní" nějaké té původní chyby, které v IE náhodou zafunguje.
Tím vykreslením bitmapy mám na mysli podobný kód, jaký jsi napsal v [606]:
document.getElementById('x').innerHTML = document.body.clientWidth
a tím vykreslením menu mám na mysli vykreslení odkazu ukotveného napevno v levém horním rohu, v adrese odkazu mám pak buď html adresu nebo příkaz javascriptu.
huh huh 23.5.2011 12:37  612
David11 [610]: je možný, že si jenom stojím na vedení, na JS se expertem býti necítím, ale tyhle dvě věci jsou podle mě v naprostém rozporu:

Samozřejmě, že něco nevykresluji, abych to pak zahodil tím, že zavolám reload().
...
při události onresize zavolám funkci zobraz(true), která vykreslí bitmapu v jiné velikosti a místo znovuvykreslení menu zavolá reload()


Předpokládám, že reloadem je myšlen location.reload() a že nejde o (i)framy.
david11 David11 - Bilbo..and the mouse police never sleeps 23.5.2011 12:24  611
mptsDiky, do konzole jsem nahlédnout zkusil, nic co by mě navedlo k řešení toho problému jsem tam ale neobjevil.

Resp. objevuje se tam tohle, ale netuším jestli to s tím problémem vůbec souvisí:

Could not read chrome manifest file 'C:\Program Files\Mozilla Firefox\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}\chrome.manifest'.

Chyba: Components.classes['@mozilla.org/extensions/manager;1'] is undefined
Zdrojový soubor: chrome://dotnetassistant/content/bootstrap.js
Řádek: 33

Varování: XUL box prvku _moz_generated_content_after obsahuje vloženého potomka #text, čímž musí být všichni jeho potomci zalomeni do bloku.
Zdrojový soubor: chrome://browser/content/browser.xul
Řádek: 0

Muzes mi prosim poradit jak tu konzolu pouzit? Da se pomoci ni nejak krokovat?
david11 David11 - Bilbo..and the mouse police never sleeps 23.5.2011 12:19  610
huhSamozřejmě, že něco nevykresluji, abych to pak zahodil tím, že zavolám reload().
Jen jsem náhodou přišel na to, že IE mi tam to menu VRÁTÍ po tom zavolání reload(). Resp. chová se to v tom IE, podle mě takto:
- v BODY zavolám funkci zobraz(false), která vykreslí nejdřív bitmapu a pak menu.
- při události onresize zavolám funkci zobraz(true), která vykreslí bitmapu v jiné velikosti a místo znovuvykreslení menu zavolá reload(), což (v IE) způsobí, že se tam to menu opět objeví. Dělám to tak proto, protože pokud bych při onresize zavolal jak překreslení bitmapy, tak překreslení menu, nezafungovalo by to (jak v IE, tak ve FF). Pokud ve FF reloaduju ručně (kliknutím na tlačítko reload) - udělá to přesně to samé, jako v IE, tzn to menu se tam znovuobjeví. Jediný rozdíl mezi IE a FF v tomto případě je ten, že ve FF se to reload() nedá zavolat v ten okamžik kdy potřebuju z javascriptu, v IE ano.
mpts mpts Je to jinak, ba přesně naopak! 21.5.2011 09:01  609
David11 [607]: Já snad i chápu, co chceš udělat, i když ne tak úplně, proč to chceš udělat (přijde mi, že se drbeš levou rukou za pravým uchem), no ale především: všiml sis, že FF má i v základní instalaci chybovou konzoli, a že proň existují velmi užitečná rozšíření na ladění javascriptu? Možná by stačilo do té konzole jen nahlédnout a hned bys viděl, v čem je problém.
huh huh 20.5.2011 19:57  608
To naštěstí nechápu. Ty něco vykreslíš a pak to hned zahodíš tím, že zavoláš reload() ?
david11 David11 - Bilbo..and the mouse police never sleeps 20.5.2011 17:40  607
Jasně, tohle fungovat bude. Ja to používám složitějc a zřejmě jsem udělal něco, co IE (možná náhodou) udělá přesně tak, jak potřebuju a FF ne.

<BODY onresize="zobraz(true)">
<script>
zobraz(false);
</script>
</BODY>

Podle parametru true/false poznam, zda je to volano pri onresize nebo normalne pri zobrazovani stranky. Tohle reseni je "z nouze ctnost", ktera prave v tom IE zafungovala, a ted jsem zjistil, ze to nefunguje ve FF.

V ty funkci zobraz totiz mam jednak vykresleni bitmapy v zavislosti na velikosti okna a jednak vykresleni prvku menu, ktere mam ukotvene v levem hornim rohu. Pokud to volam s tim false, vykresluji jak bitmapu, tak menu. Potrebuji ale zareagovat zmenou velikosti bitmapy pokud uzivatel zmeni velikost okna. Tak jsem to navazal na tu udalost onresize, zmena velikosti bitmapy je OK, ale kdyz (jak v IE, tak v FF) po vykresleni bitmapy jeste zavolam vykresleni tech tlacitek, tak bitmapa zmizi a tlacitka se vykresli blbe. A prisel jsem na to, ze staci vykreslit pri te udalosti onresize pouze bitmapu a tlacitka se v okne objevi kdyz zadam rucne reload. Tak jsem to udelal tak, ze v pripade onresize vykreslim pouze bitmapu a javascriptem zavolam to reload. V IE to zafunguje, v FF ne (jako bych to reload nezavolal).

Mozna to vysvetluju blbe, ale snad to z toho jde pochopit ; - )
huh huh 20.5.2011 17:22  606
David11 [605]: Me tento minimalni priklad funguje OK i ve FF.
<script>
function f() {
document.getElementById('x').innerHTML = document.body.clientWidth
}
</script>
<body onresize="f()">
<div id='x'>xxxx</div>
54564564
</body>

Jinak, než se patlat s nekompatibilitama jednotlivejch prohlížečů, bych použil nějakou zavedenou knihovnu.
david11 David11 - Bilbo..and the mouse police never sleeps 20.5.2011 15:46  605
Můžete mi někdo prosím poradit, jak mám správně volat funkci javascriptu při události onresize? Potřebuji, aby se při změně velikosti okna on-line překreslil obsah stranky. Dělám to takto:
<BODY onresize="mojeFunkceJavascriptu()">
...
</BODY>
V IE vše funguje OK. Ve FireFoxu nezafunguje zavolání javascriptové funkce reload (neprovede se), přestože to na ten řádek evidentně jde. Když vynutím reloadování stránky ručně, vypadá pak přesně tak, jak chci. V IE to reloadování pomocí javascriptu zafunguje OK (nemusí se to pak ručně reloadovat), ve FireFoxu ne (musí se to pak ručně reloadovat). Úplně by mi stačilo, kdyby to, když to takto volám, zafungovalo i ve FireFoxu. Nebo jak jinak mám zavolat tu svou funkci (obsahující ten reload) při události onresize, pokud chci, aby reload při tom volání zafungoval i ve FireFoxu?
bighead BIGHead Pořádáte akci, vyzkoušejte - naše moderátory 19.2.2011 11:46  602
Teď koukám, že je to klub JS, takže ta část o tom zápisu asi neplatí, ale ten začátek by měl :).

[ 398 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt