entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Pierdo los eventos al recargar un iframe

Buenas,

Haber si me pueden ayudar, estoy haciendo un editor, y este editor hace modificaciones en un iframe, el problema es que tengo un evento click en un boton que cuando guardo o hago alguna opcion recargo el iframe, todo bien , pero a partir de ahí todos los eventos se pierden, he probado miles de formas y he buscado en todos los idiomas, no encuentro la manera de enganchar de nuevo los enventos sin tener que recargar la pagina completamente. Voy a poner el codigo minimizado, para que se entienda.

 $(document).on("ready",function() {    
    App.init();
 });

 $('iframe#myiframe').on("load",function(){

   EditIframe.init();   
 });

 var App = function(){

     var iframe    = $("iframe#myiframe").contents();
     var newreload =false;

         var reload= function(){
         $("#reload").on("click",function(e) {
             e.preventDefault();
             App.reset();
             App.init();
             EditIframe.init();
             return;
          });

     };

 return{

         init: function () {
             sidebar();
             reload();
             widget();           
         },
         frame:function(){
             editHtml();
             removeHtml();
             addHtml();
             this.hideloading();   
         },
         reset:function(){
             $(".frameWrapper .loading").show();
             document.getElementById('myiframe').contentWindow.location.reload();
         },
         hideloading:function(){
             $(".frameWrapper .loading").hide();
         },
         preparedIframe:function(){
            $(".frameWrapper .loading").find("p.one").after("<p class='two'>Preparing html..</p>");
         },

     };

 }();

 var EditIframe=function(){

     var iframe    = $("#myiframe").contents();

     var hoverElement=function(){

         iframe.find("*").not("html,body").on("mouseover.selectElementBorder",function(e) {
             e.preventDefault();
             e.stopPropagation();
             var el = $(this);
             EditIframe.showLine(el);
         }).on('mouseout', function(e) {
              e.stopPropagation();
              var el=$(this);
              EditIframe.hideLine(el);
         });

     };

     return {

         init: function(){
             hoverElement();
         },
         activate:function(){

             this.init();
         },
         deactivate:function(){

             iframe.find("*").off("click mouseout mouseover");
         },
         showLine: function(el){

             el.css({'outline': '3px dashed #2c3e50', 'outline-offset': '-3px', 'cursor': 'pointer'});

         },

     };

 }();

EN resumen tengo el boton con id reload, que al clickar se ejecuenta app.reset y esto genera la recarga del iframe, luego justamente intento añadir de nuevo los eventos App.init e EditIframe.Init para que vuelva enganchar, pero ni caso macho.

Tengo que estar fallando en alguna tonteria algo de concepto.

Espero puedan ayudarme.

Gracias.

1voto

Leonardo-Tadei comentado

Podrías poner una prueba mínima en algún lugar público para poder verlo funcionando?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta