2010-08-04 7 views
0

Je travaille sur un script qui soumettra des fichiers de formulaire (images) via un iFrame temporaire, puis renverra les vignettes des images, qui seront ensuite déplacées de l'iFrame vers le document principal . Cela fonctionne bien. Mais j'inclus également un lien que l'utilisateur peut cliquer pour enlever l'image si désiré. Ce lien utilise Prototype d'envoyer une demande de suppression de l'image:Chargement de fichier avec les gestionnaires d'événements temp iframe et Prototype

<div id="upload_area"> 
<div class="image"> 
    <img src="/img/submitted/thumbnail.jpg" alt="arp" /> 

    <div class="delete"> 
     <a href="/images/del_submit/576" id="link1927905376" onclick=" event.returnValue = false; return false;">X</a> 

     <script type="text/javascript"> 
      //<![CDATA[ 
      Event.observe('link1927905376', 'click', function(event) { new Ajax.Updater('upload_area','/images/del_submit/576', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'upload_area']}) }, false); 
      //]]> 
     </script> 
    </div> 
</div> 

Quand je charge cela, cependant, l'écouteur d'événement est toujours ignoré. Si je charge le même code via ajax sans utiliser l'iframe, cela fonctionne très bien. Je suppose que c'est parce que le gestionnaire d'événements n'est pas enregistré lorsqu'il est déplacé de l'iframe au document principal. Mais je ne suis pas sûr de savoir comment contourner cela ...

Des conseils pour que quelque chose comme ça fonctionne?

+0

Besoin de plus de détails ou de sections du code JavaScript? – bjudson

Répondre

0

La solution était plutôt simple, après tout. Depuis que je suis à l'aide d'un script non-Prototype pour déplacer la réponse de l'iframe à un div sur la page, je viens d'avoir à appeler evalScripts() sur le récipient après avoir été déplacé:

window.parent.$m(id_element).innerHTML.evalScripts(); 

Dans le cas de une opération Ajax normale, Prototype appelle evalScripts() par défaut.