Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Kodo problemėlė

Parašė Creatium· 2010 Kov. 29 18:03:01
#1

Sveiki. Turiu aš beveik puikiai veikiantį kodą. Vienintelis dalykas, kuris mane nervina yra tai, kad ant IE jo dalis prastokai veikia.

Štai kodas:


      $(document).ready(function() {
         $("#nav li > ul").each(function() {
            $(this).hide();
         });   
         
         var base = $('base').attr("href");      
         $("#nav a").each(function() {
            if (base + $(this).attr("href") == window.location.href) {   
               $(this).parents().show();
            }

         });
         $("#nav a").click(function() {
            if (!$(this).attr("href")) {
               $(this).next().toggle();
            }
         });
      });





Raudonai pažymėta vieta nustato, kad kuomet adresas atitinka navigacijos href adresą - toji navigacijos ul dalis bus atidaryta. Bėda tame, kad ant IE šioji vieta veikia prastai, nes pas mane yra navigacijoje nuoroda Naujienos, kuri turi tuščią href. Taigi, pagal idėją esant pradiniame puslapyje (http://www.adresas.lt) visos kitos navigacijos skiltys turėtų būti uždarytos. Kitos naršyklės rodo gerai - uždaro kitas skiltis, tačiau IE - atidaro po "Naujienos" einančias skiltis. Bandžiau visaip kaitaliot (javascript nemoku, tik kažką suprantu).

Rašot tik tie, kurie garantuotai žinot kame bėda, kaip ištaisyt ją ar šiaip kažką naudingo galit pasakyt. Visi kiti, kurie parašys beprasmes žinutes, gaus grupes Floderis.

Redagavo Creatium· 2010 Kov. 29 18:03:17

Parašė Žmogus· 2010 Kov. 29 19:03:03
#2

Ant IE nenuskaito to base tag'o, reiktu manau, atskirą kodą IE parašyti

Parašė Creatium· 2010 Kov. 29 19:03:15
#3

Tai gal galit kas parašyt, nes aš dar taip nesigaudau Javascipte, kad kodus rašyt :D

Nes pagrinde, tai veikia puikiai, tik vat kuomet yra pradinis puslapis visos skiltys atidarytos yra.

Parašė Creatium· 2010 Kov. 29 20:03:02
#4

Tai gal galit kas parašyt, nes aš dar taip nesigaudau Javascipte, kad kodus rašyt :D

Nes pagrinde, tai veikia puikiai, tik vat kuomet yra pradinis puslapis visos skiltys atidarytos yra.

Parašė Creatium· 2010 Kov. 29 21:03:33
#5

Tai gal galit kas parašyt, nes aš dar taip nesigaudau Javascipte, kad kodus rašyt :D

Nes pagrinde, tai veikia puikiai, tik vat kuomet yra pradinis puslapis visos skiltys atidarytos yra.

Parašė nesby· 2010 Kov. 29 21:03:20
#6

parasyk ko tau reikia duosiu koda, nes zinau kur visi scriptai yra

Parašė Creatium· 2010 Kov. 29 21:03:22
#7

Nesby parašė:
parasyk ko tau reikia duosiu koda, nes zinau kur visi scriptai yra


Šitas kodas irgi gerai veikia. Jeigu rasi ne ilgesnį ir tokį patį gerą - gerai. Šitas kodas yra menu-tree tipo navigacija.

Parašė Creatium· 2010 Kov. 30 14:03:22
#8

Nesby parašė:
parasyk ko tau reikia duosiu koda, nes zinau kur visi scriptai yra


Šitas kodas irgi gerai veikia. Jeigu rasi ne ilgesnį ir tokį patį gerą - gerai. Šitas kodas yra menu-tree tipo navigacija.

Parašė Creatium· 2010 Kov. 30 16:03:45
#9

Nesby parašė:
parasyk ko tau reikia duosiu koda, nes zinau kur visi scriptai yra


Šitas kodas irgi gerai veikia. Jeigu rasi ne ilgesnį ir tokį patį gerą - gerai. Šitas kodas yra menu-tree tipo navigacija.

Parašė ozzWANTED· 2010 Rugp. 17 12:08:24
#10

Mano patarimas - naudok alert(''); debugui. Su IE pamatysi kokį compare daro ir kodėl netinka:
$("#nav a").each(function() {
    /*debug*/ alert((base + $(this).attr("href")) + '==' + window.location.href);
    if (base + $(this).attr("href") == window.location.href) {   
         $(this).parents().show();
        /*debug*/ alert('ok');
    } else {
    /*debug*/ alert('failed');
    }
}



Parašė Creatium· 2010 Rugp. 17 13:08:30
#11

Taip turėtų atrodyt?
      $(document).ready(function() {
         $("#nav li > ul").each(function() {
            $(this).hide();
         });   
         
         var base = $('base').attr("href");      
$("#nav a").each(function() {
    /*debug*/ alert((base + $(this).attr("href")) + '==' + window.location.href);
    if (base + $(this).attr("href") == window.location.href) {
         $(this).parents().show();
        /*debug*/ alert('ok');
    } else {
    /*debug*/ alert('failed');
    }
}
         $("#nav a").click(function() {
            if (!$(this).attr("href")) {
               $(this).next().toggle();
            }
         });
      });





Nes taip tai neveikia išvis kodas... Ar aš ne taip supratau?

Parašė Creatium· 2010 Rugp. 17 13:08:39
#12

Taip turėtų atrodyt?
      $(document).ready(function() {
         $("#nav li > ul").each(function() {
            $(this).hide();
         });   
         
         var base = $('base').attr("href");      
$("#nav a").each(function() {
    /*debug*/ alert((base + $(this).attr("href")) + '==' + window.location.href);
    if (base + $(this).attr("href") == window.location.href) {
         $(this).parents().show();
        /*debug*/ alert('ok');
    } else {
    /*debug*/ alert('failed');
    }
}
         $("#nav a").click(function() {
            if (!$(this).attr("href")) {
               $(this).next().toggle();
            }
         });
      });





Nes taip tai neveikia išvis kodas... Ar aš ne taip supratau?

Parašė ozzWANTED· 2010 Rugp. 17 13:08:56
#13

Kaip parašei taip ir turi atrodyti

Parašė Creatium· 2010 Rugp. 17 13:08:42
#14

Keista, nes taip neveikia visas meniu nei su chrome, nei su ie.

Parašė Creatium· 2010 Rugp. 17 15:08:49
#15

Hehehe...

Susitvarkiau prirašęs return false; :D

Va taip atrodo veikiantis kodas:

$(document).ready(function() {
         $("#nav li > ul").each(function() {
            $(this).hide();
         });   
         
         var base = $('base').attr("href");      
         $("#nav a").each(function(){
            if (base + $(this).attr("href") == window.location) {   
               $(this).parents().show();
               return false;
            }
         });
         $("#nav a").click(function(){
            if (!$(this).attr("href")) {
               $(this).next().toggle();
            }
         });
      });



Parašė Creatium· 2010 Rugp. 17 19:08:46
#16

Ok, kaip visada būna išsprendus vieną bėda iškilo kita (tiesą sakant jinai buvo visada): nuostabusis internet explorer 5.5 ignoruoja <a>Linkas</a> tagus. Kitaip tariant jis atvaizduoja paprastą tekstą (ne kaip linką). Naudot <a href="#"> arba <a href=""> negaliu, nes tuomet puslapis persikrauna. Vieną pusiau sprendimą radau - tai <a href="javascript:void(0);">. Dabar ie5.5 atvaizduoja kaip linką, tačiau pats linkas neatlieka paskirtos funkcijos (šiuo atveju neišskleidžia meniu). Taigi klausiu jūsų, gal yra koks būdas priversti ie5.5 rodyt veikiantį linką neperkraunant puslapio?

Parašė ozzWANTED· 2010 Rugp. 17 22:08:25
#17

Ar žinojai kad IE6 oficialiai nepalaikomas. Taigi - IE6 ir senesni neturėtų būti tai apie ką tu galvoji. Ši auditorija žmonių sudaro ~1 proc. tavo puslapio lankytojų.

Parašė Pakartoti slaptažodį· 2010 Rugp. 17 22:08:29
#18

Tai jau tikrai - nesuk galvos dėl tų išskasenų. Ką apie 5.5 - tai kaip tokie dalykai ten veikti gali, jei ten sunkiai <center>'is veikia. :|

Parašė Creatium· 2010 Rugp. 17 22:08:20
#19

Na, analytico duomenimis ie naudotojų auditorija mano puslapyje yra ~40%, iš jų ~20% naudoja ie6, taigi... Kas dėl problemos, tai esu megėjas sutvarkyt visas iškilusias problemas, todėl norėčiau ir šią sutvarkyt.

Parašė ozzWANTED· 2010 Rugp. 17 22:08:54
#20

Fake ta informacija. Tu man parodyk žmogų su IE6. Čia nebent koks senukas arba tie kurie turi tik Windows 98. Daug tokių žinai? Aš sakau kaip realiai yra - pvz. tarp šio saito registruotų narių IE6 turi vos 1,2 proc.

Parašė Creatium· 2010 Rugp. 17 23:08:36
#21

Pyk nepykęs, bet aš bet kokiu atveju pasitikėsiu google analytics informacija, juolab kuomet žinau kokia auditorija lankosi mano tinklalapyje (šiuo atveju tai yra daugiau suaugę žmonės, negu jaunimas, todėl manau, kad tokia informacija yra daug maž patikima).

Parašė ozzWANTED· 2010 Rugp. 18 00:08:41
#22

Aš tai nepykstu. Tiesiog jeigu darbe man kas nors pradeda kažką apie IE6 kalbėti, pro ausis praleidžiu. Aš net IE7 esu linkęs ignoruoti jeigu tik įmanoma.

IE8(W7 stock, WXP - max), IE9 (nuo rudens, W7). FF 2.0,FF 3.0, FF 4.0(nuo rudens). Chrome - visos versijos praktiškai, Opera - 9, 10 jokių problemų.

Vienintelės IE6, IE7 yra probleminės. IE7 dar pusė velnio.

Niekas tau nedraudžia daryti, nes "IE6 hacks" yra labai populiari tematika internete ir daugybė saitų apie tai. Tačiau IE5.5 hacks - čia jau miręs dalykas žmogau. Su IE5.5 ėjo W98.

Be abejonės internete egzistuoja net IE4 hacks. Tačiau vienas faktas - Google NEPALAIKO iš IE6. O tai jau daug ką sako.

Parašė Kelmas· 2010 Rugp. 18 09:08:38
#23

Creatium parašė:
Pyk nepykęs, bet aš bet kokiu atveju pasitikėsiu google analytics informacija, juolab kuomet žinau kokia auditorija lankosi mano tinklalapyje (šiuo atveju tai yra daugiau suaugę žmonės, negu jaunimas, todėl manau, kad tokia informacija yra daug maž patikima).


Pats GOOGLE blokuoja IE 6. Tai sekim pavydžiu :D

Parašė Creatium· 2010 Rugp. 18 10:08:11
#24

Na taip, tačiau kuomet ateina lankytojų su tokiomis ie versijomis ir negali visavertiškai naudotis puslapiu (šiuo atveju meniu), tai yra manau nelabai gerai. Ko gero reiks man su ifu padaryt, kad rodytu meniu paprastą kuomet su ie5.5 ir žemesnėm ateina...

Parašė Kelmas· 2010 Rugp. 18 10:08:11
#25

Tai, kad tu čia labai mandrą navigaciją darai. Garantuoju, kad išjungus JS išvis niekas joje neveiktu?

Parašė Creatium· 2010 Rugp. 18 10:08:38
#26

Ne viskas neveiktų, bet būtų keblumų naudotis. O navigacija labai paprasta (multikategorinė). Bet kokiu atveju reikės pritaikyt ir naršyklėms su išjungtu javascriptu.