然后呢,为了能够产生响应式,weebox绑定了窗口的resize、scroll,这两个方法很关键,resize是为了窗口在缩放过程中,弹出框的模态层、弹出框能够重新绘制大小和居中,scroll为了弹出矿口始终处于window窗口的中心位置(setCenterPosition,稍候介绍)。
1.setCenterPosition 方法
// 居中 this.setCenterPosition = function() { var wnd = $(window), doc = $(document); // 大小不能超过窗口大小,很关键哦 var iContentW = wnd.width() - 40; var iContentH = self.options.maxheight || wnd.height() - 100 * 2 - 40; self.dc.css({ "max-height" : iContentH + 'px', "max-width" : iContentW + 'px', }); self.dheader.css({ "max-width" : iContentW + 'px', }); self.df.css({ "max-width" : iContentW + 'px', }); // 设置top和left,使窗口居中 self.dh.css({ top : (wnd.height() - self.dh.height()) / 2 + doc.scrollTop(), left : (wnd.width() - self.dh.width()) / 2 + doc.scrollLeft() }); };
2.initContent 方法,加载窗口内容
// 加载内容 this.initContent = function(content) { // ok button的名字 self.bo.val(self.options.okBtnName); // cancel button的名字 self.bc.val(self.options.cancelBtnName); // 窗口标题 self.setTitle(self.options.title); if (!self.options.showTitle) { self.dheader.hide(); } if (!self.options.showButton) { self.df.hide(); } if (!self.options.showCancel) { self.bc.hide(); } if (!self.options.showOk) { self.bo.hide(); } if (self.options.contentType == "selector") { self.selector = self._content; self._content = $(self.selector).html(); self.setContent(self._content); // if have checkbox do var cs = $(self.selector).find(':checkbox'); self.dc.find(':checkbox').each(function(i) { this.checked = cs[i].checked; }); $(self.selector).empty(); self.onopen(); self.show(); self.focus(); } else if (self.options.contentType == "ajax") {// content为ajax时,能够将view视图加载到弹出窗口中 self.ajaxurl = self._content; // loading self.setContent('<div> <i></i> 内容加载中... </div>'); self.show(); $.ajax({ type : "post", cache : false, url : self.ajaxurl, success : function(data) { // 处理view视图数据 var json = YUNM.jsonEval(data); // 出现error时,关闭当前窗口,弹出错误消息 if (json[YUNM.keys.statusCode] == YUNM.statusCode.error) { self.close(); $.showErr(json[YUNM.keys.message]); } else { // 正常情况下,显示内容 self._content = data; self.setContent(self._content); // 设置打开事件 self.onopen(); // 设置焦点 self.focus(); // 居中显示 if (self.options.position == 'center') { self.setCenterPosition(); } } }, // 通过弹出的对话框显示错误信息 error : function(xhr, ajaxOptions, thrownError) { self.close(); YUNM.ajaxError(xhr, ajaxOptions, thrownError); } }); } else if (self.options.contentType == "image") {// image类型时,弹出图片 self.setContent('<img src=' + self._content + ' ></div>'); self.onopen(); self.show(); self.focus(); } else { self.setContent(self._content); self.onopen(); self.show(); self.focus(); } };
3.initMask ,加载模态层