解析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设置div一直在页面顶部显示的方法
Oct 24 Javascript
jquery获取元素值的方法(常见的表单元素)
Nov 15 Javascript
jQuery大于号(&gt;)选择器的作用解释
Jan 13 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
Jun 06 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
Jun 22 Javascript
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
使用Vuex实现一个笔记应用的方法
Mar 13 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 Javascript
js尾调用优化的实现
May 23 Javascript
这应该是最详细的响应式系统讲解了
Jul 22 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生成静态页
2006/11/25 PHP
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
Python装饰器使用示例及实际应用例子
2015/03/06 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
python3中rank函数的用法
2019/11/27 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
《在山的那边》教学反思
2014/02/23 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
四群教育工作总结
2015/08/10 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
详解MySQL集群搭建
2021/05/26 MySQL
python内置模块之上下文管理contextlib
2022/06/14 Python