Autor Zpráva
Kajda
Profil *
Potřeboval jsem vytvořit rozbalovací menu. Našel jsem na internetu různé návody a postupy, nejvíce se mi líbil ten, jenž využívá vlastností CSS. V IE je však nutno si vypomoci s behaviorem. Zdrojový kód vypadá takto (autora záměrně neuvádím, setkal jsem se na webu se stejným kódem pod několika různými jmény, takže nevím):

<attach event="onmouseover" handler="hoverRollOver" />
<attach event="onmouseout" handler="hoverRollOff" />
<script type="text/javascript">
//
// Simple behaviour for IE5+ to emulate :hover CSS pseudo-class.
// Experimental ver 0.1
//
// This is an experimental version! Handle with care!
// Manual at: http://www.hszk.bme.hu/~hj130/css/list_menu/hover/
//

function hoverRollOver ()
{
element.origClassName = element.className; // backup origonal className
var tempClassStr = element.className;
tempClassStr += "Hover"; // convert name+'Hover' the last class name to emulate tag.class:hover
tempClassStr = tempClassStr.replace(/\s/g,"Hover "); //convert name+'Hover' the others to emulate tag.class:hover
tempClassStr += " hover"; // add simple 'hover' class name to emulate tag:hover
element.className = element.className + " " + tempClassStr;
// window.status = element.className; // only for TEST
}
function hoverRollOff ()
{
element.className = element.origClassName;
}

</script>

Je-li tu někdo, kdo tento kód zná a ví jak funguje, mohl by mi objasnit funkci těchto dvou řádků?

tempClassStr = tempClassStr.replace(/\s/g,"Hover "); //convert name+'Hover' the others to emulate tag.class:hover
tempClassStr += " hover"; // add simple 'hover' class name to emulate tag:hover

Nepotřebuji se ale dozvědět, že replace nahradí podřetězec jiným řetězcem a ve druhém případě se ke stávajícímu řetězci připojí řetězc " hover". Rád bych věděl funkci. Funguje to i bez nich, podle mých zkušeností.

A nakonec, nejsem žádný odborník, ale myslím, že jsem odhalil jednu chybičku a to totiž tu, že záloha původního názvu třídy by měla být jinde než v první funkci. Pokud totiž při načtení stránky bude ukazatel myši právě nad menu, provede se rovnou akce onmouseout a jméno třídy se zruší, protože původní jméno ještě nebylo uloženo. Jestli plácám nesmyly, prosím nekamenujte mě :)

A nakonec, menu lze nalézt např. na stránkách Intervalu: http://css.interval.cz/clanky/vysouvaci-menu-rozcestnik/
Cocoa
Profil
Myslím, že nejlepší bude když si přečteš http://www.jakpsatweb.cz/ nebo http://www.jaknaweb.com/ Potom by ti mělo být vše jasné...
peta
Profil *
Kajda
http://www.volny.cz/peter.mlich/www.htm#lmoje - Editor
http://www.volny.cz/peter.mlich/www.htm#www60 - ruzna menu

onmouseover - dela to, ze pokud mys vejde do ramu objektu, tak se spusti efekt
onmouseout - zas to, ze pokud vyjde mys z ramu objektu, spusti se efekt
Nemuze nastat situace, kdyz vejdes a opustis, ze se pobiji 2 scripty, pokud ty scripty nemas v casovacich. Proc? Protoze se nejdriv dokonci script a potom se spusti dalsi.
Priklad s casovacem tam mam take, menu Efekty, a vyuzivam to pro zpruhlednovani. Nicmene script se stejne dokonci, protoze pouzivam 1 casovac, takze nedojde k tomu, ze 1 script nastavi a=1 b=1, ale nestihne c=1 a druhy pracuje pak s udaji a=1 b=1 c=0 na ktere nebyl pripraven, ocekaval vse =1
peta
Profil *
Kajda Pokud ti slo o to, ze by nejakym zazrakem nastalo, ze se prvni spusti onmouseout, tak se priradi do className=-1 nebo "", takze vicemene je to v poradku, pokud tam nemas nejakou class. V tom pripade je to vazne chyba, ale mam pocit, ze toto nemuze snad nastat, ze se prvni spusti trejne "over"
Kajda
Profil *
Myslím, že nejlepší bude když si přečteš http://www.jakpsatweb.cz/ nebo http://www.jaknaweb.com/ Potom by ti mělo být vše jasné...

Ani nejlepší příručky mi to vysvětlit nedokáží, asi jsi mě nepochopil. Chtěl jsem to vysvětlit v kontextu tohoto příkladu, k čemu to tam je, co to dělá, proč ...

peta Ten zázak se opravdu nejspíš stal, myslím, že byla provedena rovnou akce onmouseout. Momentálně ale nemám po ruce příklad, zkusím nějaký vyprodukovat :)

Jinak v tom mém prvním textu se mi nezalomila řádka u jednoho odstavce a pokračuje kamsi do neviditelna, co jsem udělal špatně? :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0