我正在开发一个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>
有没有解决方案?