解析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 相关文章推荐
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
javaScript如何生成xmlhttp
Dec 16 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
jQuery EasyUi 验证功能实例解析
Jan 06 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 Javascript
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
JavaScript设计模式之装饰者模式实例详解
Jan 17 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 Javascript
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
May 30 Javascript
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
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
拼音码表的生成
2006/10/09 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
Python中str.format()详解
2017/03/12 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
Form表单及django的form表单的补充
2019/07/25 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
最新会计专业求职信范文
2014/01/28 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
义卖募捐活动总结
2015/05/09 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技