【岁月留声(JavaScript)】showModalDialog对父窗口进行操作

一直以来都是后端的内容比较多,今天换换胃口。

首先要说的是,这篇文章历史也比较久远了(2016年2月)。当然了,这个技术并不是我原创,我也是从别人博客中吸取过来稍作整合的。记得那时候是要做一个电信的项目用到这个功能所以做完就顺势记录了一下。

这次要说的这个技术我觉得非常有意思,是针对IE6浏览器做一个处理。
当时电信用的机器操作系统都比较旧(开发人员都已经用Windows7了,他们还在用Windows XP办公),因此他们基本上都是使用默认浏览器IE6。那时主流前端框架基本上都逐步淘汰对IE6兼容,没有办法某只能编写原生的JavaScript,因此有了这篇总结。

需求:需要在IE6使用showModalDialog对父窗口进行操作(这里就已经是两层弹窗了,父窗口再弹一个模态窗口,呵呵)

实现:

  1. 父窗口操作子窗口
var parValue="这个是父窗口变量值";

// 打开模态窗口
function showDailog(pageHref,title,height,width){
  // xAxis定位
  var left =(screen.availHeight-height)/2;
  // yAxis定位
  var top  =(screen.availWidth-width)/2;
	// 固定好模态窗口的位置,这个位置是能够根据窗口大小动态调整的
  var setting = window.showModalDialog(pageHref,window,title,"scrollbars=yes;resizable=no;help=no;status=no;center=yes;dialogTop=25;dialogLeft="+ left +";dialogTop="+ top +";dialogHeight="+height+"px;dialogWidth="+width+"px;");
	// 当模态窗口返回“refresh”时就执行刷新页面动作
  if (setting =="refresh"){
    window.location.reload();             
    alert("true");
  }
}

// 测试调用方法
function test(){
  alert("模态窗口成功调用父窗口的方法");
}
  1. 模态窗口操作父窗口
// 获取父窗口对象
var parWin=window.dialogArguments;

...

// 实现刷新
parWin.location.reload(); 

...

// 获取父窗口中的对象("parDiv"是父窗口的一个div控件)
alert(parWin.document.getElementById("parDiv").innerHTML);
// 获取父窗口中的变量(应该返回"这个是父窗口变量值"这个字符串)
alert("父窗口变量>>>"+parWin.parValue);

...

// 调用父窗口中的方法(应该弹出alert对话框显示"模态窗口成功调用父窗口的方法")
parWin.test();

...

// 给父窗口中parDiv控件内容赋值
parWin.document.getElementById("parDiv").innerHTML="模态窗口给父窗口赋值";

...

// 关闭模态窗口
function closeDailog(){
	window.parent.close();
}

...

// 关闭父窗口(慎用)
function closeParentModal(){     
	var isIE = (navigator.appName == 'Microsoft Internet Explorer')
  //如果是IE浏览器
	if(isIE){          
		window.parent.parent.close();
		parWin.close();
  }else{
  	...
	}
}

之所以说有意思是因为当时的时代背景,那时正值IE6向IE7过渡,这个时期需要做兼容的痛苦只有那个时代的人才知道,随着IE逐渐被时代淘汰,现在微软的Edge也慢慢向大环境靠拢,相信未来应该会越来越好的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kida 的技术小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值