2012-01-22 55 views
-3

請看這個頁面http://www.scriptiny.com/2011/03/javascript-modal-windows/並查看演示。你會發現當點擊掩碼時彈出消失。我怎樣才能使這個點擊事件可選,並默認true像在這段代碼中;我想編輯一個工作的javascript代碼來增加它的功能

TINY.box.show({url:'advanced.html',width:300,height:150,maskclick:假})

整個JavaScript代碼進行編輯:

TINY={}; 

TINY.box=function(){ 
var j,m,b,g,v,p=0; 
return{ 
    show:function(o){ 
     v={opacity:70,close:1,animate:1,fixed:1,mask:1,maskid:'',boxid:'',topsplit:2,url:0,post:0,height:0,width:0,html:0,iframe:0}; 
     for(s in o){v[s]=o[s]} 
     if(!p){ 
      j=document.createElement('div'); j.className='tbox'; 
      p=document.createElement('div'); p.className='tinner'; 
      b=document.createElement('div'); b.className='tcontent'; 
      m=document.createElement('div'); m.className='tmask'; 
      g=document.createElement('div'); g.className='tclose'; g.v=0; 
      document.body.appendChild(m); document.body.appendChild(j); j.appendChild(p); p.appendChild(b); 
      m.onclick=g.onclick=TINY.box.hide; window.onresize=TINY.box.resize 
     }else{ 
      j.style.display='none'; clearTimeout(p.ah); if(g.v){p.removeChild(g); g.v=0} 
     } 
     p.id=v.boxid; m.id=v.maskid; j.style.position=v.fixed?'fixed':'absolute'; 
     if(v.html&&!v.animate){ 
      p.style.backgroundImage='none'; b.innerHTML=v.html; b.style.display=''; 
      p.style.width=v.width?v.width+'px':'auto'; p.style.height=v.height?v.height+'px':'auto' 
     }else{ 
      b.style.display='none'; 
      if(!v.animate&&v.width&&v.height){ 
       p.style.width=v.width+'px'; p.style.height=v.height+'px' 
      }else{ 
       p.style.width=p.style.height='100px' 
      } 
     } 
     if(v.mask){this.mask(); this.alpha(m,1,v.opacity)}else{this.alpha(j,1,100)} 
     if(v.autohide){p.ah=setTimeout(TINY.box.hide,1000*v.autohide)}else{document.onkeyup=TINY.box.esc} 
    }, 
    fill:function(c,u,k,a,w,h){ 
     if(u){ 
      if(v.image){ 
       var i=new Image(); i.onload=function(){w=w||i.width; h=h||i.height; TINY.box.psh(i,a,w,h)}; i.src=v.image 
      }else if(v.iframe){ 
       this.psh('<iframe src="'+v.iframe+'" width="'+v.width+'" frameborder="0" height="'+v.height+'"></iframe>',a,w,h) 
      }else{ 
       var x=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP'); 
       x.onreadystatechange=function(){ 
        if(x.readyState==4&&x.status==200){p.style.backgroundImage=''; TINY.box.psh(x.responseText,a,w,h)} 
       }; 
       if(k){ 
        x.open('POST',c,true); x.setRequestHeader('Content-type','application/x-www-form-urlencoded'); x.send(k) 
       }else{ 
        x.open('GET',c,true); x.send(null) 
       } 
      } 
     }else{ 
      this.psh(c,a,w,h) 
     } 
    }, 
    psh:function(c,a,w,h){ 
     if(typeof c=='object'){b.appendChild(c)}else{b.innerHTML=c} 
     var x=p.style.width, y=p.style.height; 
     if(!w||!h){ 
      p.style.width=w?w+'px':''; p.style.height=h?h+'px':''; b.style.display=''; 
      if(!h){h=parseInt(b.offsetHeight)} 
      if(!w){w=parseInt(b.offsetWidth)} 
      b.style.display='none' 
     } 
     p.style.width=x; p.style.height=y; 
     this.size(w,h,a) 
    }, 
    esc:function(e){e=e||window.event; if(e.keyCode==27){TINY.box.hide()}}, 
    hide:function(){TINY.box.alpha(j,-1,0,3); document.onkeypress=null; if(v.closejs){v.closejs()}}, 
    resize:function(){TINY.box.pos(); TINY.box.mask()}, 
    mask:function(){m.style.height=this.total(1)+'px'; m.style.width=this.total(0)+'px'}, 
    pos:function(){ 
     var t; 
     if(typeof v.top!='undefined'){t=v.top}else{t=(this.height()/v.topsplit)-(j.offsetHeight/2); t=t<20?20:t} 
     if(!v.fixed&&!v.top){t+=this.top()} 
     j.style.top=t+'px'; 
     j.style.left=typeof v.left!='undefined'?v.left+'px':(this.width()/2)-(j.offsetWidth/2)+'px' 
    }, 
    alpha:function(e,d,a){ 
     clearInterval(e.ai); 
     if(d){e.style.opacity=0; e.style.filter='alpha(opacity=0)'; e.style.display='block'; TINY.box.pos()} 
     e.ai=setInterval(function(){TINY.box.ta(e,a,d)},20) 
    }, 
    ta:function(e,a,d){ 
     var o=Math.round(e.style.opacity*100); 
     if(o==a){ 
      clearInterval(e.ai); 
      if(d==-1){ 
       e.style.display='none'; 
       e==j?TINY.box.alpha(m,-1,0,2):b.innerHTML=p.style.backgroundImage='' 
      }else{ 
       if(e==m){ 
        this.alpha(j,1,100) 
       }else{ 
        j.style.filter=''; 
        TINY.box.fill(v.html||v.url,v.url||v.iframe||v.image,v.post,v.animate,v.width,v.height) 
       } 
      } 
     }else{ 
      var n=a-Math.floor(Math.abs(a-o)*.5)*d; 
      e.style.opacity=n/100; e.style.filter='alpha(opacity='+n+')' 
     } 
    }, 
    size:function(w,h,a){ 
     if(a){ 
      clearInterval(p.si); var wd=parseInt(p.style.width)>w?-1:1, hd=parseInt(p.style.height)>h?-1:1; 
      p.si=setInterval(function(){TINY.box.ts(w,wd,h,hd)},20) 
     }else{ 
      p.style.backgroundImage='none'; if(v.close){p.appendChild(g); g.v=1} 
      p.style.width=w+'px'; p.style.height=h+'px'; b.style.display=''; this.pos(); 
      if(v.openjs){v.openjs()} 
     } 
    }, 
    ts:function(w,wd,h,hd){ 
     var cw=parseInt(p.style.width), ch=parseInt(p.style.height); 
     if(cw==w&&ch==h){ 
      clearInterval(p.si); p.style.backgroundImage='none'; b.style.display='block'; if(v.close){p.appendChild(g); g.v=1} 
      if(v.openjs){v.openjs()} 
     }else{ 
      if(cw!=w){p.style.width=(w-Math.floor(Math.abs(w-cw)*.6)*wd)+'px'} 
      if(ch!=h){p.style.height=(h-Math.floor(Math.abs(h-ch)*.6)*hd)+'px'} 
      this.pos() 
     } 
    }, 
    top:function(){return document.documentElement.scrollTop||document.body.scrollTop}, 
    width:function(){return self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}, 
    height:function(){return self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}, 
    total:function(d){ 
     var b=document.body, e=document.documentElement; 
     return d?Math.max(Math.max(b.scrollHeight,e.scrollHeight),Math.max(b.clientHeight,e.clientHeight)): 
     Math.max(Math.max(b.scrollWidth,e.scrollWidth),Math.max(b.clientWidth,e.clientWidth)) 
    } 
} 
}(); 
+2

請問您可以投入最少的精力併發布相應的代碼? – buschtoens

+0

@silvinci完成! –

+0

歡迎來到Stack Overflow! SO並不是真正意義上的「調試我的代碼」網站 - 如果你正在尋找這個網站,你應該僱傭一個人爲你做。如果您在處理此問題時遇到*特定技術問題,請隨時編輯相應的問題。 –

回答

1

也許更換

m.onclick=g.onclick=TINY.box.hide; 

g.onclick = TINY.box.hide; 

if (v.maskclick !== false) 
    m.onclick = TINY.box.hide; 
+1

感謝哥們,我真的很感謝你的幫助 –

相關問題