天天看點

js中獲得父視窗連結getParent方法以及各種打開視窗的方法

//打開模态視窗

 function dialog(obj){


if(obj.url == undefined || obj.url == null){

throw new Error("please set obj.url");

}

var url = obj.url;



if(url.indexOf("?")!=-1){

url = url+ "&r_=" + Math.random();

}else {

url = url+ "?r_=" + Math.random();

}


//alert(obj.width + "," + obj.height + "," + obj.top + "," + obj.left);



var w ;

if(!obj.width){

w = screen.width/2;

}else{

w = parseInt(obj.width);

}



var h ;

if(!obj.height){

h = 500;

}else{

h = parseInt(obj.height);

}



var t ;

if(!obj.top){

t = 50;

}else{

t = parseInt(obj.top);

}



var l;

if(!obj.left){

l = (screen.width - parseInt(w))/2;

}else{

l = parseInt(obj.left);

}


w = parseInt(w) + "px";

h = parseInt(h) + "px";

l = parseInt(l) + "px";

t = parseInt(t) + "px";



var paramStr = "";


paramStr += ("dialogHeight=" + h + ";");

paramStr += ("dialogWidth=" + w + ";");

if(obj.center != undefined && obj.center != null){

paramStr += "center=" + obj.center + ";"

}else{

paramStr += ("dialogTop=" + t + ";");

paramStr += ("dialogLeft=" + l + ";");

}

paramStr += "resizable=yes;scroll=yes";

//alert(paramStr);


var rv = window.showModalDialog(url,window,paramStr);


if (rv == undefined) {

  rv = window.returnValue;  

}



if(obj.cb){

return obj.cb.call(rv,rv);

}



return rv;



 }





 function openWin(u,w,h){

var obj = {

url : u,

width : w,

height : h

}

return dialog(obj);

 }





 function openWinWithCallBack(u,w,h,fun){

var obj = {

url : u,

width : w,

height : h,

cb : fun

}

return dialog(obj);

 }





 function openWindow(obj){

if(obj.url == undefined || obj.url == null){

throw new Error("please set obj.url");

}

var url = obj.url;



if(url.indexOf("?")!=-1){

url = url+ "&r_=" + Math.random();

}else {

url = url+ "?r_=" + Math.random();

}


//alert(obj.width + "," + obj.height + "," + obj.top + "," + obj.left);



var w ;

if(!obj.width){

w = screen.width/2;

}else{

w = parseInt(obj.width);

}



var h ;

if(!obj.height){

h = 500;

}else{

h = parseInt(obj.height);

}



var t ;

if(!obj.top){

t = 50;

}else{

t = parseInt(obj.top);

}



var l;

if(!obj.left){

l = (screen.width - parseInt(w))/2;

}else{

l = parseInt(obj.left);

}


w = parseInt(w);

h = parseInt(h);

l = parseInt(l);

t = parseInt(t);


//視窗句柄

var name;

if(!obj.name){

name = "win_" + new Date().getTime();

}else{

name = obj.name;

}



//alert(name);



//是否可以改變視窗大小

var resizable = obj.resizable || "no";



//是否有滾動條

var scrollbars= obj.scrollbars || "yes";



//是否有狀态欄

var status = obj.status || "no";



//是否有菜單欄

var menubar = obj.menubar || "no";


//是否有工具欄

var toolbar = obj.toolbar || "no";


//是否有位址欄

var locations = obj.locations || "yes";



return window.open (url,name,"height=" + h + ",width=" + w +  ",top=" + t + ",left=" + l + ",toolbar=" + toolbar + ",menubar=" + menubar + ",scrollbars=" + scrollbars + ", resizable=" + resizable + ",location=" + locations + ", status=" + status + ",hotkeys=esc"); 

 }



 //模态視窗打開模式的子頁面擷取父頁面對象

 function getParent(){

var p = "";

if (window.opener != undefined) {

p = window.opener;

}

else {

p = window.dialogArguments;

};

return p;

 }



 //模态視窗打開模式的子頁面設定returnValue

 function setReturnValue(v){

if (window.opener != undefined) {

window.opener.returnValue = v;

}

else {

window.returnValue = v;

};

 }









 //滑動門

 function ScrollDoor(){

this.value = 0;

 }





 ScrollDoor.prototype = {



onlyMenu : function(menus,openClass,closeClass){ // only menu no have content

var _this = this;

for(var i = 0 ; i < menus.length ; i++)

{
 

_this.$(menus[i]).flag = ++this.value;

_this.$(menus[i]).value = i;

_this.$(menus[i]).onclick = function(){
 

for(var j = 0 ; j < menus.length ; j++)

{
 

_this.$(menus[j]).className = closeClass;

//_this.$(divs[j]).style.display = "none";
 

}
 

_this.$(menus[this.value]).className = openClass;
 

//_this.$(divs[this.value]).style.display = "block";
 

}

}



},


sd : function(menus,divs,openClass,closeClass){// two class

var _this = this;

if(menus.length != divs.length)

{

alert("菜單層數量和内容層數量不一樣!");

return false;

}
 

for(var i = 0 ; i < menus.length ; i++)

{
 

_this.$(menus[i]).flag = ++this.value;

_this.$(menus[i]).value = i;

_this.$(menus[i]).onclick = function(){
 

for(var j = 0 ; j < menus.length ; j++)

{
 

_this.$(menus[j]).className = closeClass;

_this.$(divs[j]).style.display = "none";
 

}
 

_this.$(menus[this.value]).className = openClass;
 

_this.$(divs[this.value]).style.display = "block";
 

}

}

},

sd3class : function(menus,divs,openClass,closeClass,middleClass){ //three class

var _this = this;

for(var x = 0 ; x < menus.length ; x++)

{

_this.$(menus[x]).state = _this.$(menus[x]).className == openClass ?  "open" : "close";

}



if(menus.length != divs.length)

{

alert("菜單層數量和内容層數量不一樣!");

return false;

}
 

for(var i = 0 ; i < menus.length ; i++)

{
 

_this.$(menus[i]).flag = ++this.value;

_this.$(menus[i]).value = i;



_this.$(menus[i]).onclick = function(){
 


for(var j = 0 ; j < menus.length ; j++)

{

_this.$(menus[j]).className = closeClass;

_this.$(divs[j]).style.display = "none";

_this.$(menus[j]).state = "close";

}

this.state = "open";

_this.$(menus[this.value]).className = openClass;

_this.$(divs[this.value]).style.display = "block";
 

}



_this.$(menus[i]).onmouseover = function(){

//alert(this.state);

for(var j = 0 ; j < menus.length ; j++)

{
 

if(_this.$(menus[j]).state != "open")

{

_this.$(menus[j]).className = closeClass;
 

_this.$(menus[j]).state = "close";

}
 

}

if(this.state == "open")

{

}

else

{

this.className = middleClass;

}
 

}



_this.$(menus[i]).onmouseout = function(){

if(this.state != "open")

{

this.className = closeClass;

}

}

}

},

$ : function(oid){

if(typeof(oid) == "string")

return document.getElementById(oid);

return oid;

}

 }