1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > html 弹窗 支持ie8 浏览器兼容性的问题 支持IE8 不支持IE6 想解决这个问题 两个都支持 ...

html 弹窗 支持ie8 浏览器兼容性的问题 支持IE8 不支持IE6 想解决这个问题 两个都支持 ...

时间:2020-09-19 16:11:13

相关推荐

html 弹窗 支持ie8 浏览器兼容性的问题 支持IE8 不支持IE6 想解决这个问题 两个都支持 ...

1 /**2 * ymPrompt.js 消息提示组件3 * @author netman8410@4 */5 // IE8透明度解决方案6 (function() {7 if(window.ymPrompt)return;8 window.ymPrompt={9 version:'4.0',10 pubDate:'-02-03',11 apply:function(o, c, d) {12 if(d) ymPrompt.apply(o, d);13 if(o&&c&&typeofc=='object')for(varpinc) o[p]=c[p];14 returno;15 },16 eventList: []17 };18 /*初始化组件的接口,防止外部调用失败。_initFn:缓存初始调用传入的参数*/19 varinitFn=['getPage','resizeWin','doHandler','close','setDefaultCfg','show'], _initFn={},t;20 while(t=initFn.shift()) ymPrompt[t]=eval('0,function(){_initFn.'+t+'=arguments}');21 22 /*以下为公用函数及变量*/23 varuseIframe=/MSIE (\d)\./.test(navigator.userAgent)&&parseInt(RegExp.$1)<7;//是否需要用iframe来遮罩24 var$=function(id) {25 returndocument.getElementById(id)26 };//获取元素27 var$height=function(obj) {28 returnparseInt(obj.style.height)||obj.offsetHeight29 };//获取元素高度30 varaddEvent=(function() {31 returnnewFunction('env','fn','obj',['obj=obj||document;', window.attachEvent?"obj.attachEvent('on'+env,fn)":'obj.addEventListener(env,fn,false)',';ymPrompt.eventList.push([env,fn,obj])'].join(''))32 })();//事件绑定33 vardetachEvent=(function() {34 returnnewFunction('env','fn','obj',['obj=obj||document;', window.attachEvent?"obj.detachEvent('on'+env,fn)":'obj.removeEventListener(env,fn,false)'].join(''))35 })();//取消事件绑定36 //为元素的特定样式属性设定值37 varsetStyle=function(el, n, v) {38 if(!el)return;39 if(typeofn=='object') {40 for(variinn) setStyle(el, i, n[i]);41 return;42 }43 /*dom数组或dom集合*/44 if(elinstanceofArray||/htmlcollection|nodelist/i.test(''+el)) {45 for(vari=el.length-1; i>=0; i--) setStyle(el[i], n, v);46 return;47 }48 el.style[n]=v;49 };50 /*----------------和业务有关的公用函数-----------------*/51 varbtnIndex=0, btnCache, seed=0;//当前焦点的按钮的索引、当前存在的按钮、id种子52 /*创建按钮*/53 vardefaultBtn=function(){return{OK:[curCfg.okTxt,'ok'], CANCEL:[curCfg.cancelTxt,'cancel']}};54 varmkBtn=function(txt, sign, autoClose, id) {55 if(!txt)return;56 if(txtinstanceofArray) {57 /*无效按钮删除*/58 varitem,t=[];59 while(txt.length) (item=txt.shift())&&t[t.push(mkBtn.apply(null, defaultBtn()[item]||item))-1]||t.pop();60 returnt;61 }62 id=id||'ymPrompt_btn_'+seed++;63 autoClose=typeofautoClose=='undefined'?'undefined':!!autoClose;64 return{65 id: id,66 html:""67 };68 }69 /*生成按钮组合的html*/70 varjoinBtn=function(btn) {71 if(!btn)returnbtnCache='';72 if(!(btninstanceofArray)) btn=[btn];73 if(!btn.length)returnbtnCache='';74 btnCache=btn.concat();75 varhtml=[];76 while(btn.length) html.push(btn.shift().html);77 returnhtml.join('');78 }79 /*默认显示配置及用户当前配置*/80 vardftCfg={81 titleBar:true,82 fixPosition:false,83 dragOut:true,84 autoClose:true,85 showMask:true,86 maskAlphaColor:'#000',//遮罩透明色87 maskAlpha:0.1,//遮罩透明度88 title:'标题',//消息框标题89 message:'内容',//消息框按钮90 width:300,91 height:185,92 winPos:'c',93 iframe:false,94 btn:null,95 closeTxt:'关闭',96 okTxt:'确 定',97 cancelTxt:'取 消',98 icoCls:'',99 handler:function() {}//回调事件100 },curCfg={};101 /*开始解析*/102 (function() {103 if(!document.body||typeofdocument.body!='object')returnaddEvent('load', arguments.callee, window);//等待页面加载完成104 varrootEl=patMode=='CSS1Compat'?document.documentElement: document.body;//根据html Doctype获取html根节点,以兼容非xhtml的页面105 /*保存窗口定位信息*/106 varsaveWinInfo=function() {107 ymPrompt.apply(dragVar, {108 offX: ym_win.offsetLeft-rootEl.scrollLeft,//弹出框相对屏幕的位移差109 offY: ym_win.offsetTop-rootEl.scrollTop110 });111 };112 /*-------------------------创建弹窗html-------------------*/113 varmaskStyle='position:absolute;top:0;left:0;display:none;text-align:center';114 vardiv=document.createElement('div');115 div.innerHTML=[116 /*遮罩*/117 "

") : '',118 /*窗体*/119 "", useIframe ?"": '', ""].join('');120 document.body.appendChild(div),div=null;121 122 vardragVar={};123 /*mask、window*/124 varmaskLevel=$('maskLevel');125 varmaskIframe=$('maskIframe');126 varym_win=$('ym-window');127 /*header*/128 varym_headbox=$('ym-tl');129 varym_head=ym_headbox.firstChild.firstChild;130 varym_hText=ym_head.firstChild;131 varym_hTool=ym_hText.nextSibling;132 /*content*/133 varym_body=$('ym-ml').firstChild.firstChild.firstChild;134 /*button*/135 varym_btn=$('ym-btnl');136 varym_btnContent=ym_btn.firstChild.firstChild;137 /*bottom*/138 varym_bottom=$('ym-bl');139 /*绑定事件*/140 varmEvent=function(e) {141 e=e||window.event;142 varsLeft=dragVar.offX+(e.x||e.pageX);143 varsTop=dragVar.offY+(e.y||e.pageY);144 145 if(!curCfg.dragOut) {146 varsl=rootEl.scrollLeft,st=rootEl.scrollTop;147 sLeft=Math.min(Math.max(sLeft, sl), rootEl.clientWidth-ym_win.offsetWidth+sl);148 sTop=Math.min(Math.max(sTop, st), rootEl.clientHeight-ym_win.offsetHeight+st);149 }150 try{setStyle(ym_win, {151 left: sLeft+"px",152 top: sTop+"px"153 });}catch(e){}154 };//mousemove事件155 varuEvent=function() {156 varbindEl=ym_head.releaseCapture&&ym_head;157 detachEvent("mousemove",mEvent,bindEl);158 detachEvent("mouseup",uEvent,bindEl);159 saveWinInfo();160 bindEl&&(detachEvent("losecapture",uEvent,bindEl),bindEl.releaseCapture());161 };//mouseup事件162 addEvent('mousedown',function(e) {163 e=e||window.event;164 ymPrompt.apply(dragVar, {165 offX: ym_win.offsetLeft-(e.x||e.pageX),//鼠标与弹出框的左上角的位移差166 offY: ym_win.offsetTop-(e.y||e.pageY)167 });168 varbindEl=ym_head.setCapture&&ym_head;169 addEvent("mousemove",mEvent,bindEl);170 addEvent("mouseup",uEvent,bindEl);171 bindEl&&(addEvent("losecapture",uEvent,bindEl),bindEl.setCapture());172 },ym_head);173 174 /*键盘监听*/175 varkeydownEvent=function(e) {176 vare=e||event;177 if(e.keyCode==27) destroy();//esc键178 if(btnCache){179 varl=btnCache.length,nofocus;180 /*tab键/左右方向键切换焦点*/181 document.activeElement.id!=btnCache[btnIndex].id&&(nofocus=true);182 if(e.keyCode==9||e.keyCode==39) nofocus&&(btnIndex=-1),$(btnCache[++btnIndex==l?(--btnIndex) : btnIndex].id).focus();183 if(e.keyCode==37) nofocus&&(btnIndex=l),$(btnCache[--btnIndex<0?(++btnIndex) : btnIndex].id).focus();184 if(e.keyCode==13)returntrue;185 }186 /*屏蔽所有键盘操作包括刷新等*/187 if((e.keyCode>110&&e.keyCode<123)||e.keyCode==9||e.keyCode==13) {188 try{189 e.returnValue=!(e.cancelBubble=true);190 e.keyCode=0;191 }catch(ex) {192 try{193 e.stopPropagation();194 e.preventDefault();195 }catch(e) {}196 }197 }198 };199 /*页面滚动弹出窗口滚动*/200 varscrollEvent=function(){201 setStyle(ym_win, {202 left: (dragVar.offX+rootEl.scrollLeft)+'px',203 top: (dragVar.offY+rootEl.scrollTop)+'px'204 });205 };206 maskLevel.οncοntextmenu=ym_win.onselectstart=ym_win.οncοntextmenu=function() {returnfalse};//禁止右键207 /*重新计算遮罩的大小*/208 var_resizeMask=function(){209 setStyle([maskLevel, maskIframe], {210 width: rootEl.scrollWidth+'px',211 height: rootEl.scrollHeight+'px',212 display:''213 });214 };215 varresizeMask=function(){216 setStyle([maskLevel, maskIframe],'display','none');//先隐藏217 /*IE下必须有延迟才能正确计算*/218 !+'\v1'?setTimeout(_resizeMask,0):_resizeMask();219 }220 /*蒙版的显示隐藏,state:true显示,false隐藏,默认为true*/221 varmaskVisible=function(visible) {222 if(!curCfg.showMask)return;223 setStyle([maskLevel, maskIframe],'display','none');//先隐藏224 (visible===false?detachEvent:addEvent)("resize",resizeMask,window);225 if(visible===false)return;226 setStyle(maskLevel, {227 background: curCfg.maskAlphaColor,228 filter:'alpha(opacity='+(curCfg.maskAlpha*100)+')',229 opacity: curCfg.maskAlpha230 });231 resizeMask();232 233 };234 vargetPos=function(f){235 varpos=[rootEl.clientWidth-ym_win.offsetWidth, rootEl.clientHeight-ym_win.offsetHeight, rootEl.scrollLeft, rootEl.scrollTop];236 vararr=f.replace(/\{(\d)\}/g,function(s,s1){returnpos[s1]}).split(',');237 return[eval(arr[0]),eval(arr[1])];238 }239 varposMap={240 c:'{0}/2+{2},{1}/2+{3}',241 l:'{2},{1}/2+{3}',242 r:'{0}+{2},{1}/2+{3}',243 t:'{0}/2+{2},{3}',244 b:'{0}/2,{1}+{3}',245 lt:'{2},{3}',246 lb:'{2},{1}+{3}',247 rb:'{0}+{2},{1}+{3}',248 rt:'{0}+{2},{3}'249 }250 varSetWinSize=function(w, h) {251 if(!ym_win||ym_win.style.display=='none')return;252 curCfg.height=parseInt(h)||dftCfg.height;253 curCfg.width=parseInt(w)||dftCfg.width;254 setStyle(ym_win, {255 left:0,256 top:0,257 width: curCfg.width+'px',258 height: curCfg.height+'px'259 });260 varpos=posMap[curCfg.winPos];261 pos=pos?getPos(pos) : curCfg.winPos;//支持自定义坐标262 if(!(posinstanceofArray))pos=getPos(posMap['c']);263 setStyle(ym_win, {264 top: pos[1]+'px',265 left: pos[0]+'px'266 });267 saveWinInfo();//保存当前窗口位置信息268 setStyle(ym_body,'height', curCfg.height-$height(ym_headbox)-$height(ym_btn)-$height(ym_bottom)+'px');//设定内容区的高度269 };270 var_obj=[];//IE中可见的obj元素271 varwinVisible=function(visible) {272 varfn=visible===false?detachEvent:addEvent;273 if(curCfg.fixPosition) fn("scroll", scrollEvent, window);274 fn("keydown", keydownEvent);275 if(visible===false) {276 setStyle(ym_win,'display','none');277 setStyle(_obj,'visibility','visible');278 _obj=[];279 return;280 }281 for(varo=document.getElementsByTagName('object'),i=o.length-1;i>-1;i--) o[i].style.visibility!='hidden'&&_obj.push(o[i])&&(o[i].style.visibility='hidden');282 setStyle([ym_hText, ym_hTool],'display', curCfg.titleBar?'':'none');283 ym_head.className='ym-tc'+(curCfg.titleBar?'':'ym-ttc');284 ym_hText.innerHTML=curCfg.title;//标题285 ym_hTool.innerHTML="'+curCfg.message+'') :"";//内容287 ym_body.className="ym-body"+curCfg.icoCls;//图标类型288 setStyle(ym_btn,'display', (ym_btnContent.innerHTML=joinBtn(mkBtn(curCfg.btn)))?'':'none');//没有按钮则隐藏289 setStyle(ym_win,'display','');290 SetWinSize(curCfg.width, curCfg.height);291 btnCache&&$(btnCache[btnIndex=0].id).focus();//第一个按钮获取焦点292 };//初始化293 varinit=function() {294 maskVisible();295 winVisible();296 };//销毁297 vardestroy=function() {298 maskVisible(false);299 winVisible(false);300 };301 ymPrompt.apply(ymPrompt, {302 close: destroy,303 getPage:function() {304 returnym_body.firstChild.tagName.toLowerCase()=='iframe'?ym_body.firstChild:null305 },306 /*显示消息框,fargs:优先配置,会覆盖args中的配置*/307 show:function(args, fargs) {308 /*支持两种参数传入方式:(1)JSON方式 (2)多个参数传入*/309 vara=Array.prototype.slice.call(args,0),310 o={};311 if(typeofa[0]!='object') {312 varcfg=['message','width','height','title','handler','maskAlphaColor','maskAlpha','iframe','icoCls','btn','autoClose','fixPosition','dragOut','titleBar','showMask','winPos'];313 for(vari=0,l=a.length; i

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。