Pogledajte određenu poruku
Staro 21. 06. 2008.   #1
krcko
A suicide bomber!
Certified
 
Avatar krcko
 
Datum učlanjenja: 05.08.2005
Lokacija: Beograd
Poruke: 63
Hvala: 1
2 "Hvala" u 2 poruka
krcko is on a distinguished road
Pošaljite poruku preko MSN za krcko Pošaljite poruku preko Skype™ za krcko
Default firefox i addEventListener...

evo vec neko vreme pokusavam da otkrijem zasto mi firefox ne prosledjuje event parametar fji koju mu dam u addEventListener ali ne mogu da uocim gresku (a i nema tu bas mesta za greske..)

dakle imam $bind fju koja izgleda ovako:
Kôd:
var $bind = function(element, event, listener)
{
    if (!element.nodeType && element.length)
        
        for (var i = 0; i < element.length; i++) $bind(element[i], event, listener);

    else if (element.addEventListener)

        element.addEventListener(event, function(){ return listener.apply(this, arguments); }, false);
};
i recimo da ocu da vezem handler za click dogadjaj na sve elemente sa klasom foobar:
Kôd:
$bind($class('foobar'), 'click', function(event)
{
    console.log(this);          // ovo je ok
    console.log(event);       // stampa praznu liniju
    console.log(arguments); // stampa [ ] (dakle prazan array)
});
$class fja koja se pominje u kodu vraca niz elemenata koji imaju trazenu klasu, ona radi posao tj ne pravi ona problem sigurno, evo koda:
Kôd:
var $class = function(className, parent)
{
    return (document.getElementsByClassName) ? // try to use native function if available (firefox 3)
        (parent || document).getElementsByClassName(className) :
        $xpath("child::*[contains(concat(' ', @class, ' '), ' " + className + " ')]", parent);
};

var $xpath = function(query, parent)
{
    var result = [];

    parent = parent || document;

    if (!parent.nodeType && parent.length)

        for (var i = 0; i < parent.length; i++) result = result.concat($xpath(query, parent[i]));

    else
    {
        var xpr = document.evaluate(query, parent, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

        for (var i = 0, length = xpr.snapshotLength; i < length; i++) result.push(xpr.snapshotItem(i));
    }

    return result.slice();
};
ima li neko ideju zasto ne dobijam event objekat?

samo da napomenem da mi ovo treba samo za firefox, cross-browser resenja mi nisu potrebna
__________________
jQuery addict!
krcko je offline   Odgovorite uz citat