2010-10-07 8 views
0

J'ai une ancienne page de mode qui utilise un cadre contenant un cadre supérieur et un cadre inférieur. Le jeu de cadres est défini dans « index.html » et mon code est le suivant:Intercepter les clics de lien à partir de la trame

<html> 
<head> 

<script src="jquery-1.4.2.min.js" type="text/javascript"></script> 

<script> 

    $(document).ready(function(){ 

     $('#mainFrame').ready(function() { 

      $('#mainFrame a').live('click', function() { 
       alert('u click'); 
       return false; 
      }); 

     }); 

    }); 

</script> 

</head> 
<frameset id="main" rows="125,*" cols="*"> 
<frame src="header.html" name="headerFrame" id="headerFrame" /> 
<frame src="main.html" name="mainFrame" id="mainFrame" /> 
</frameset> 
</html> 

Je voudrais être en mesure d'intercepter les liens qui sont cliqué sur le cadre « mainFrame ». Je pensais que je pouvais simplement ajouter un événement prêt pour cela, puis relier les événements de clic, mais cela ne fonctionne pas. Des idées?

Remarque: Les fichiers sont tous sur le même domaine, donc ce n'est pas un problème XSS.

Répondre

2
<script> 
$(document).ready(function(){ 
    $('#mainFrame').ready(function() { 
    var f = document.getElementById('mainFrame').contentWindow.document; 
    $('a', f).live('click', function() { 
     alert('u click'); 
     return false; 
    }); 
    }); 
}); 
</script> 

Vous avez juste besoin d'ajouter un contexte à la déclaration jQuery, pour lui dire où chercher un #mainFrame

Oh ouais .... vous devez absolument vous assurer que le iframe est chargé. Le "live" devrait prendre soin de cela ... mais je travaille sur quelque chose où je devais écrire un plugin ready() personnalisé pour jQuery pour m'assurer que mes images étaient chargées, parce que j'avais des problèmes avec Chrome.

Chrome et IE semblent sauter le pistolet sur la document.addEventListener (« DOMContentLoaded » ... que je crois est ce que les fonctions de prêt() en cours d'utilisation. JQuery

Quoi qu'il en soit, assurez-vous que votre les iframes sont chargés au maximum