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

Nudou jsi opuch?
Navštiv Lopuch!

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: esevjlx
[ 398 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
huh huh 24.5.2011 13:08  624
Takhle, pokud ta část s document.all je jenom určená pro IE, tak OK, ale obecně jde o proprietární zastaralé řešení, které se dá snadno nahradit standardním getElementById.
david11 David11 - Bilbo..and the mouse police never sleeps 24.5.2011 12:13  623
huh [618]Díky, s tím DIVem a bez toho reload() už to funguje přesne tak, jak jsem chtěl. Teda musel jsem do toho Tvého kódu vrátit tu fci testFix(id). Což mě, jako naprostého amatéra v programování webu, vede k otázce proč jsi napsal "document.all nekomentuji". Pokud je to ale všem zde natolik zřejmé, že bys "nošením dříví do lesa" všechny votravoval, můžeš mi to kdyžtak nějak trochu rozvést do pošty? Anebo sem, podle Tvého uvážení, třeba by to někoho taky zajímalo. ; - )
(Já to tam vrazil proto, že jsem si na stránkach Jak psát web našel příklad jak zafixovat objekt na stránce a vopral jsem to přesně podle toho příkladu.)

Každopádně ještě jednou díky, to vyražení id="PREPOCTI" z <BODY ... > a vražení pomocí DIV mezi <BODY> ... </BODY> bylo přesně to, co jsem potřeboval poradit.
Jasně, ten můj kód je asi hodně nestandardní resp. ošklivý, což může asi vést k problémům s nekompatibilitou v budoucích prohlížečích (?), ale zatím to funguje OK, tak to zatím předělávat nebudu : - ) Měl jsem ale za to, že to je naopak elegantní, vyřešit všechno jednou jednoduchou a jednou složitou funkcí javascriptu, ale jak jsem psal, v programování webu nemám abici být profesionál ; - )
wronski Wronski Jsou to zrůdy. - Sofistikované. 23.5.2011 21:20  622
Když bych to neznačkoval jako inline, a dal k tomu css, tak si vyřešim nežádoucí značkování v komentářích a uvozovkách, ale zas to pak bude nepřenosný... Takže asi zůstane u lehký primitivní verze.
wronski Wronski Jsou to zrůdy. - Sofistikované. 23.5.2011 20:32  621
huh [620]: Dík. Anka taky řikala, že je hezkej .))
huh huh 23.5.2011 20:09  620
Wronski [619]: Ten C++ zvýrazňovač ale trpí přesně stejnými problémy. Jinak PHP zvýrazňovač hezkej.
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.

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

(c) 2001-2011 Lopuch.cz   
Kontakt