JavaScript: Ajout d'un gestionnaire onClick sans écraser l'existant

Je suis en train de modifier tous les liens sur une page pour leur permettre d'effectuer un travail supplémentaire lorsqu'ils sont cliqués.

Trivial approche pourrait être quelque chose comme ceci:

function adaptLinks()
{
    var links = document.getElementsByTagName('a');
    for(i = 0; i != links.length; i++)
    {
        links[i].onclick = function (e)
        {
            <do some work>
            return true;
        }
    }
}

Mais certains liens ont déjà un onClick gestionnaire qui doit être préservé. J'ai essayé le suivant:

function adaptLinks()
{
    var links = document.getElementsByTagName('a');
    for(i = 0; i != links.length; i++)
    {
        var oldOnClick = links[i].onclick;
        links[i].onclick = function (e)
        {
            if(oldOnClick != null && !oldOnClick())
            {
                return false;
            }
            <do some work>
            return true;
        }
    }
}

Mais cela ne fonctionne pas parce que oldOnClick n'est évaluée que lorsque le gestionnaire est appelé (il contient la valeur de la dernier le lien sous ce point).

  • J'ai vu que beaucoup de tâches similaires autour d'ici sont résolus à l'aide de jQuery. Je suis actuellement à la recherche en elle, comme il semble à l'aise dans plusieurs autres tâches.
InformationsquelleAutor rluba | 2009-05-21