1 /**2 * ymPrompt.js 消息提示组件3 * @author netman8410@163.com4 */5 // IE8透明度解决方案6 (function() {7 if(window.ymPrompt)return;8 window.ymPrompt={9 version:'4.0',10 pubDate:'2009-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=document.compatMode=='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

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

  1. 浏览器报错Not allowed to load local resource:的解决办法,与网上大多数都不同,亲测有用!

    浏览器报错Not allowed to load local resource:的解决办法,与网上大多数都不同,亲测有用! 起因 报错原因 吐槽 解决办法 参考 起因 因为深度学习用的是pytorch ...

  2. ie8浏览器html圆角问题,IE7,IE8浏览器CSS实现正圆角效果代码

    圆角效果以前用的是图片实现现在我们来用css实现了,下面来看一篇非常详细的关于IE7,IE8浏览器CSS实现正圆角效果代码吧,希望文章能够帮助到各位朋友. 一.关于IE7, IE8不支持CSS3 bo ...

  3. IE浏览器兼容性模式

    最近支持公司的一个内部业务管理系统,系统是基于jQuery来实现:用了2年的MVVM框架的我转向这个完全使用jQuery框架来开发的系统,真是相当不爽(相信用过MVVM框架的跟我是相同的感受):更为憋 ...

  4. 浏览器兼容性问题-JSDOM(转)

    转http://blog.sina.com.cn/s/blog_5f289d580100i07d.html 一.JS与DOM的兼容性: (一) DOM节点的访问: 1.以前对DOM节点访问一般用&qu ...

  5. 页面水印 原生js 兼容ie8浏览器

    需求缘由 项目是前后端不分离开发的,很老的项目,里面很多插件只能支持ie8,业主公司浏览器都是ie8 ,这次想给所有页面添加用户水印,所以开发需要兼容ie8 水印代码 创建一个js 文件waterma ...

  6. display:box浏览器兼容性

    原文地址:http://www.cnblogs.com/walk-on-the-way/p/5997073.html display:box浏览器兼容性 总的来说,不考虑IE浏览器的话,PC端上使用哪 ...

  7. ie8浏览器自定义工具栏设置教程

    ie8浏览器自定义工具栏设置教程 ie8浏览器自定义工具栏怎么设置?在使用IE8的网友知道,在安装IE8之后会发现IE8的工具栏中的按钮非常少,明显的不便于我们平时的上网操作.所以我们有必要根据自己的 ...

  8. 电脑浏览器打不开html文档,win7浏览器打不开本地html文件的原因及解决方法

    今天小编和大家分享深度技术win7系统浏览器打不开本地html文件的原因及解决方法,相信大家都有遇到过html文件打不开,一直显示主页而不是html页面,其实很大部分是浏览器设置问题.有什么办法可以解 ...

  9. 微信消息防撤回,这款开源神器文字、语音、图片都支持撤回查看!

    前言 微信在2014年的时候,发布的v5.3.1 版本中推出了消息撤回功能,用户可以选择撤回 2 分钟内发送的最后一条信息. 现在很多即时通讯的软件都有撤回这个功能. 腾讯为了照顾手残党,在微信和QQ ...

最新文章

  1. android post请求添加公共参数_XHttp2 一个功能强悍的网络请求库
  2. pyhon简单比较文本相似度的方法
  3. Android -- setWillNotDraw()
  4. 单链表反转的原理和python代码实现
  5. SpringCloud实战4-Hystrix线程隔离请求缓存请求合并
  6. 【DP】奇怪汉诺塔(ybtoj DP-1-2)
  7. Windows启动管理器
  8. CVE-2021-35464: ForgeRock AM远程代码执行漏洞
  9. 2022-04-11 查询PostGIS和pgRouting的版本号
  10. 启动hadoop输入jps显示:程序 ‘jps‘ 已包含在下列软件包中: * openjdk-7-jdk * openjdk-6-jdk 请尝试:sudo apt-get install ~
  11. 关于前端的margin
  12. 考研英语 - word-list-25
  13. 7-4 房产税费计算2022 (12 分)
  14. 微型计算机基础知识,第1章微型计算机基础知识
  15. 蓝桥杯练习系统答案-数的读法-Python
  16. 通过浏览器测试POST请求
  17. 路由器分出ITV与网络信号资料
  18. 最老程序员开发实训10--Android---应用介绍页面实现2
  19. 这家公司只有1个人,年赚一个亿
  20. 我是如何用半年时间工资提高四倍的?软件开发

热门文章

  1. mysql常用的yu语句_mysql常用sql语句
  2. 神经元与网络结构概论
  3. markdown转换html源码,利用Nodejs+Express将Markdown转换为HTML(附源码)
  4. return、reutrn false、e.preventDefault、e.stopPropagation、e.stopImmediatePropagation的区别
  5. LeetCode31.下一个排列 JavaScript
  6. 使用Jupter Notebook实现简单的神经网络
  7. error: invalid use of incomplete type 'struct word'|
  8. 手把手让你实现postfix+extmail+mysql虚拟用户邮件体系
  9. mysql engine 外键_Mysql 外键设置
  10. 简述tcp协议的可靠性有哪些机制_腾讯面试HTTP与TCP/IP20连问,你能答出多少?