2012-05-19 3 views
0

Je travaille sur l'extension chrome pour facebook. Si vous utilisez Facebook, vous savez que lorsque vous faites défiler vers le bas du flux de nouvelles/chronologie/profil, il affiche plus de messages. L'extension ajoute en fait un bouton à côté du bouton "J'aime". J'ai donc besoin de vérifier s'il y a plus de messages pour ajouter ce bouton.Vérifiez si la page web a été modifiée

Maintenant, pour vérifier si la page a été modifiée, j'utilise setInterval(function(){},2000). Je veux exécuter une fonction lorsque l'utilisateur clique sur le bouton. Mais cette fonction ne fonctionne pas si je l'ai mis dehors (ou même à l'intérieur) setInterval() - Le Koder maintenant éditer

Comment puis-je vérifier si la page Web a été modifiée SANS utiliser une boucle?

Exemple:

$(document).ready(function(){ 
    window.setInterval(function(){ 
      $(".UIActionLinks").find(".dot").css('display','none'); 
      $(".UIActionLinks").find(".taheles_link").css('display','none'); 
      $(".miniActionList").find(".dot").css('display','none'); 
      $(".miniActionList").find(".taheles_link").css('display','none'); 
       //only this function doesn't work: 
      $(".taheles_link").click(function(){ 
      $(".taheles_default_message").hide(); 
      $(".taheles_saving_message").show(); 
      }); 
       //end 
      $(".like_link").after('<span class="dot"> · </span><button class="taheles_link stat_elem as_link" title="תגיד תכל&acute;ס" type="submit" name="taheles" onclick="apply_taheles()" data-ft="{&quot;tn&quot;:&quot;&gt;&quot;,&quot;type&quot;:22}"><span class="taheles_default_message">תכל&acute;ס</span><span class="taheles_saving_message">לא תכלס</span></button>'); 
      $(".taheles_saving_message").hide(); 
    }, 2000); 
}); 

À l'avenir, cette extension utilisera AJAX, donc setInterval() peut faire encore plus de problèmes pour moi.

+0

Que voulez-vous dire par "vouloir exécuter plus fonction tout setInterval() est en cours d'exécution"? Je ne comprends pas vraiment ce que vous essayez de faire. Peut-être qu'un exemple nous aidera à comprendre – koenpeters

+0

Je veux exécuter une fonction lorsque l'utilisateur clique sur le bouton. Mais cette fonction ne fonctionne pas si je la mets dehors (ou même à l'intérieur) setInterval() –

+0

Donc, vous voulez dire que vous avez une fonction de gestionnaire de clic que vous connectez à l'événement 'click' des boutons mais qui ne se déclenche pas il? – koenpeters

Répondre

0

Si je comprends bien, vous voulez recevoir une notification lorsque le DOM de la page change. Et vous voulez le faire sans utiliser la fonction setInterval(). Comme votre problème réside dans les gestionnaires d'événements attachés aux éléments qui sont créés après le chargement de la page, vous serez peut-être intéressé par la technique de la pièce jointe jquery.live. Je pense que cela va résoudre votre problème.

En général, vous souhaitez que la page déclenche un événement de mutation. Il y a un mutation event spec qui pourrait être ce que vous cherchez. Voici quelques liens qui pourraient être utiles.

  1. http://tobiasz123.wordpress.com/2009/01/19/utilizing-mutation-events-for-automatic-and-persistent-event-attaching/

  2. Detect element content changes with jQuery

+0

Mise à jour importante: tout le monde utilisant des événements de mutation devrait passer maintenant à des observateurs de mutation. Voir [question] (http://stackoverflow.com/questions/11425209/are-dom-mutation-observers-slower-than-dom-mutation-events), [référence Mozilla] (https://developer.mozilla.org/en-US/docs/DOM/MutationObserveur? redirectlocale = fr-FR & redirections = DOM% 2FDOM_Mutation_Observers) –

0
$(document).ready(function(){ 
    setInterval('fun()',5000); 
    fun(); 
}); 
function fun() 
{ 
    alert(11) 
} 
Questions connexes