Pogledajte određenu poruku
Staro 20. 02. 2007.   #1
kodi
133t
Master
 
Avatar kodi
 
Datum učlanjenja: 07.01.2006
Lokacija: Beograd
Poruke: 714
Hvala: 16
37 "Hvala" u 28 poruka
kodi is on a distinguished road
Pošaljite ICQ poruku za kodi
Default XPath, Firefox i Prototype

Eh, kako se nekad skenjam.

Radim neki projekat, i koristio sam do malo pre prototype.lite.js staru dobrih 6+ meseci
I sad imam jednu ogromnu stranicu i njoj 3 poziva tipa:
Kôd:
window.onload = function() {
elementsA = document.getElementsByClassName('classA');
elementsB = document.getElementsByClassName('classB');
elementsC = document.getElementsByClassName('classC');
Inace document.getElementsByClassName je jedna veoma korisna f-ja koja dolazi uz prototype, spasava zivce i vreme....

Medjutim kako se stranica punila iz CMS-a i kako je struktura strasno komplexna (mnogo fancy efekata, i sto je najgore mnogo ugnjezdjenih elemenata) vremenom je se cela stvar jako usporila, zato sto ova f-ja prolazi kroz sve tagove na stranici, i pomocu regExpa gleda da li taj tag ima tu i tu klasu, znaci u mom slucaju 3x prolazi celu stranicu od pocetka pa do kraja

krenem ja tu da googlam, gledam kako da ubrzam stvar, vec sam se pomirio da cu da udarim id="clasaA"+{$i}, pa da kroz tri petlje getujem sve elemente..

i onda slucajno vidim da nova verzija prototype-a ima XPath podrsku... Sad ja znam da to moze samo u FF, eventualno u novoj operi.. al ajde ne budem lenj, zamenim malecki lite.js sa najnovijom full verzijom (74kB), nista drugo nisam menjao, cisto experimenta radi...

kad ja tamo, a ono medjutim:




ne da radi nego razbija, uopste ne prolazi celu stranicu, vec kupi samo relevantne elemente.. (naravno samo u FF)

Eh al sta vredi, u IE cisto mala promena zbog optimizovanije nove verzije. Nema veze, bio sam iskreno srecan dobrih 2-3 minuta

vise se uopte i ne nerviram zbog ovakvih stvari.. Skoro da mi je smesno...
za 3 godine ce valjda da izbace neki SPXXX koji ce da ima patch za IE i Xpath, to je i onako trivijalna i nevazna stvar...

Off Topic:
a evo i kako izgleda nova f-ja, jos kad bi Xpath svuda normalno radio, sve posle else bi bio visak...

Kôd:
document.getElementsByClassName = function(className, parentElement) {
  if (Prototype.BrowserFeatures.XPath) {
    var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
    return document._getElementsByXPath(q, parentElement);
  } else {
    var children = ($(parentElement) || document.body).getElementsByTagName('*');
    var elements = [], child;
    for (var i = 0, length = children.length; i < length; i++) {
      child = children[i];
      if (Element.hasClassName(child, className))
        elements.push(Element.extend(child));
    }
    return elements;
  }
};


btw, ne radi spoiler tag.. jel bese radilo to pre na forumu ???
__________________

Poslednja izmena od kodi : 20. 02. 2007. u 07:52.
kodi je offline   Odgovorite uz citat