1

Ok donc je suis nouveau à l'écriture de javascript, et voici ce que je fais/essaie de faire. Quand une page se charge (window.onload), mon code javascript parcourt tous les formulaires d'une page et leur attache une certaine méthode "onchange". Cela fonctionne très bien pour la plupart des sites Web sur Internet, sauf lorsqu'une page est mise à jour dynamiquement pour charger plus de formulaires sur la page. Comment puis-je détecter un tel événement et relancer ma fonction?Code Javascript pour détecter les changements de page? (peut-être via AJAX)

Par exemple:

Le Facebook Newsfeed a un tas de formes associées à tous les différents statuts/liens ci-dessous. Mon code les traverse et attache l'auditeur. Mais si vous allez tout le long de la page met à jour automatiquement pour révéler plus de statuts/liens/etc. (ou vous cliquez sur le lien "Older Posts") - mais maintenant mon code javascript n'a pas encore fonctionné globalement.

De toute façon je peux le faire? Merci.

EDIT: J'écris une extension de navigateur.

+0

Si vous écrivez une extension de navigateur, vous devriez probablement noter ce fait. Si non, alors je suis assez confus au sujet de l'endroit où votre script est utilisé. – Pointy

+0

Ah oui désolé ... J'écris une extension de navigateur. – PixelPerfect3

+0

Vous ne savez pas exactement ce que vous essayez de faire. Pour détecter les événements de mutation, [Discussion sur les événements de mutation jQuery] (http://forum.jquery.com/topic/mutation-events-12-1-2010). Ne semble pas simple. –

Répondre

4

utiliser .live()?

$(document).ready(function() 
{ 
    $(document).live("onchange",function() 
    { 
     // blah? 
    }); 
}); 
+0

Oh ça semble être ce que je cherche ... merci beaucoup. Je vais essayer. On dirait qu'il attache la fonction chaque fois qu'un nouvel objet est ajouté au fichier html. – PixelPerfect3

+0

Ok, donc cet exemple semble attacher la fonction 'live' à une certaine classe - est-il de toute façon attacher cette fonction à un objet "input" par exemple: $ (document) .getElementsByTagName ('input'). Live (' cliquez sur ', function() { // gestionnaire de phase appelé }); – PixelPerfect3

+0

@ PixelPerfect3: Jetez un oeil aux sélecteurs jQuery (http://api.jquery.com/category/selectors/). Mais pour répondre à ta question, oui, tu ferais juste $ ("input"). Live ("click", function() {}); Vous pourriez même avoir envie et faire "Je veux toutes les entrées de type soumettre", ils ont un sélecteur pour ce $ (": soumettre"). – Pandincus

Questions connexes