2010-12-07 6 views
0

J'ai une page HTML contenant un iframe et j'essaye d'écrire des fonctions sur des liens dans l'iframe. Les fonctions effectueront des modifications dans la page HTML ...jquery iframe src

Le script suivant fonctionne sur le premier lien sur lequel vous avez cliqué dans l'iframe. Mais quand le iframe chages "src" la fonction ne fonctionnera plus.

Comment puis-je le faire fonctionner même si le src de l'iframe est changé?

(toutes les pages sont sur le même domaine)

<script type="text/javascript"> 
    $("iframe").contents().find("a").click(function() { 
    alert('Load was performed.'); 
    }); 
</script> 
+0

Voilà comment je sloved il: var chooseName = $ ('iframe'); chooseName.load (function() { chooseName.contents(). Find ('a'). Click (fonction() { alert ('Chargement a été effectué.'); }); }); Note Commentaire de Omeid Herat ci-dessous. Ce script ne fonctionnera pas sur plusieurs domaines. Pas même si c'est un sous-domaine. Les roches Stackoverflow! Va certainement l'utiliser agin :) – Hakan

Répondre

1

Essayez d'utiliser la méthode .live(), elle lie un événement aux éléments existants et futurs. Lorsque vous modifiez le src, vous devez relier l'événement click aux nouveaux liens.

Je ne sais pas si la méthode .live() fonctionne sur un iframe mais vous pouvez essayer ceci:

$("iframe").contents().find("a").live('click',function() { 
    alert('Load was performed.'); 
    }); 

Désolé pour mon anglais cassé !.

Je ne sais pas si cela fonctionnera (désolé je n'ai pas où tester maintenant), mais que se passe-t-il si vous essayez de lier une fonction sur l'événement onLoad de votre iframe (même si W3C dit que iframe n'a pas d'événements, il semble être pris en charge par tous les navigateurs):

<iframe src="/my_contents" onLoad="onload_function()"></iframe> 
    ... 
    <script> 
     onload_function(){ 
      $(function(){ 
      $("iframe").contents().find("a").click(function() { 
       alert('Load was performed.'); 
      }); 
      }); 
     } 
    </script> 
+0

Le La méthode .live() ne fonctionne pas sur les iframes. Merci d'avoir essayé dur. Existe-t-il un autre moyen de relier l'événement click? (recharger la fonction) – Hakan

+0

Fonctionne dans IE après iframe chargé (onload), Merci! – kicaj

0

si son même que votre domaine, il devrait fonctionner sinon à cause de Some Origin polciy il ne fonctionnera pas comme interdomaine.

+0

Cela fonctionne aussi longtemps que je reste sur le même iframe. Mais si l'iframe est rechargé avec une nouvelle URL, cela ne fonctionne pas. – Hakan

+0

Cela fonctionne aussi longtemps que je reste sur le même iframe. Mais si l'iframe est rechargé avec une nouvelle URL, cela ne fonctionne pas. Toutes les URL: s et src sont le même domaine ... Merci pour répondre à toute façon :) – Hakan

+0

@Hakan: Vérifiez le format d'URL http://example.com n'est pas identique à www.example.com –