当我重新加载iframe时,jquery事件会丢失

时间:2016-10-27 18:56:59

标签: javascript jquery iframe

我正在开发一个HTML编辑器,编辑器在一个完整的网站上对iframe进行更改

我有一个函数reload,可以在保存更改DOM后重新加载iframe重新加载,所有事件如click,mouseover都会丢失...

我完成了部分代码。

加载文档和iframe:

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

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

  App.frame(); 
  EditIframe.init();   
});

App方法

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>");
        },

    };

}();

EditIframe方法

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'});

        },

    };

}();

好吧,一切都很好,直到iframe加载了该函数 App.reset elementHover事件不再有效。{/ p>

有没有解决方案?

0 个答案:

没有答案