解析js中获得父窗口链接getParent方法以及各种打开窗口的方法


Posted in Javascript onJune 19, 2013
//打开模态窗口
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;
}
}
Javascript 相关文章推荐
jQuery+PHP打造滑动开关效果
Dec 16 Javascript
JavaScript实现强制重定向至HTTPS页面
Jun 10 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
详解js中==与===的区别
Jan 08 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
详解webpack编译多页面vue项目的配置问题
Dec 11 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 Javascript
Vue插槽原理与用法详解
Mar 05 Javascript
微信小程序缓存支持二次开发封装实现解析
Dec 16 Javascript
js闭包和垃圾回收机制示例详解
Mar 01 Javascript
Js,alert出现乱码问题的解决方法
Jun 19 #Javascript
jquery拖动插件(jquery.drag)使用介绍
Jun 18 #Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 #Javascript
Jquery事件的连接使用示例
Jun 18 #Javascript
jquery属性过滤选择器使用示例
Jun 18 #Javascript
js实现的切换面板实例代码
Jun 17 #Javascript
javascript实现可改变滚动方向的无缝滚动实例
Jun 17 #Javascript
You might like
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
jquery选择器简述
2015/08/31 Javascript
图解js图片轮播效果
2015/12/20 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
Python运算符重载详解及实例代码
2017/03/07 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
如何表示python中的相对路径
2020/07/08 Python
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
拾金不昧的表扬信
2014/01/16 职场文书
女生节标语
2014/06/26 职场文书
学校志愿者活动总结
2014/06/27 职场文书
文案策划专业自荐信
2014/07/07 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
员工自我工作评价
2015/03/06 职场文书
教师节座谈会主持词
2015/07/03 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
Redis唯一ID生成器的实现
2022/07/07 Redis