js中window.showModalDialog各浏览器居中和传参实例兼以及一些兼容性问题
2012-08-28 22:40
357 查看
浏览器居中以及传参实例
window.showModelDialog可设置center参数为yes,保证其在子窗口在父窗口居中。
但是该参数只对IE浏览器有效,对火狐无效,只有通过计算模态窗口的居中位置。
解决办法
function openShowModalDialog(url,param,whparam,e){
// 传递至子窗口的参数
var paramObj = param || { };
// 模态窗口高度和宽度
var whparamObj = whparam || { width: 500, height: 500 };
// 相对于浏览器的居中位置
var bleft = ($(window).width() - whparamObj.width) / 2;
var btop = ($(window).height() - whparamObj.height) / 2;
// 根据鼠标点击位置算出绝对位置
var tleft = e.screenX - e.clientX;
var ttop = e.screenY - e.clientY;
// 最终模态窗口的位置
var left = bleft + tleft;
var top = btop + ttop;
// 参数
var p = "help:no;status:no;center:yes;";
p += 'dialogWidth:'+(whparamObj.width)+'px;';
p += 'dialogHeight:'+(whparamObj.height)+'px;';
p += 'dialogLeft:' + left + 'px;';
p += 'dialogTop:' + top + 'px;';
return showModalDialog(url,paramObj,p);
}
下面是一个使用该方法和传参的实例
Father.html
<head>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#btn").click(function (e) {
var stuObj = { name: "xy", age: 22 };
var whObj = { width: 300, height: 200 };
var returnValue = openShowModalDialog("Son.html", stuObj, whObj, e);
if (returnValue) {
alert("传回来的name:" + returnValue.name);
}
});
});
</script>
</head>
<body>
<input id="btn" type="button" value="模态测试按钮" />
</body>
Son.html
<head>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
// 接收父窗口参数
var obj = window.dialogArguments;
alert("name:" + obj.name + "age:" + obj.age);
// 回传参数至父窗口
window.returnValue = { name: "lily", age: 21 };
window.close();
});
</script>
</head>
兼容性问题
发现问题
对话框在firefox仍可拉伸大小,并显示地址栏
解决办法
1 在Firefox地址栏中输入about:config
2 在Filter中输入dom.disable_window_open_feature.location
3 双击赋值,将true改为false
以上解决办法只能让firefox不显示地址栏,但仍可以拉伸。
其实window.showModalDialog本来就是ie的方法,FF对其支持难免有些不足。
window.showModelDialog可设置center参数为yes,保证其在子窗口在父窗口居中。
但是该参数只对IE浏览器有效,对火狐无效,只有通过计算模态窗口的居中位置。
解决办法
function openShowModalDialog(url,param,whparam,e){
// 传递至子窗口的参数
var paramObj = param || { };
// 模态窗口高度和宽度
var whparamObj = whparam || { width: 500, height: 500 };
// 相对于浏览器的居中位置
var bleft = ($(window).width() - whparamObj.width) / 2;
var btop = ($(window).height() - whparamObj.height) / 2;
// 根据鼠标点击位置算出绝对位置
var tleft = e.screenX - e.clientX;
var ttop = e.screenY - e.clientY;
// 最终模态窗口的位置
var left = bleft + tleft;
var top = btop + ttop;
// 参数
var p = "help:no;status:no;center:yes;";
p += 'dialogWidth:'+(whparamObj.width)+'px;';
p += 'dialogHeight:'+(whparamObj.height)+'px;';
p += 'dialogLeft:' + left + 'px;';
p += 'dialogTop:' + top + 'px;';
return showModalDialog(url,paramObj,p);
}
下面是一个使用该方法和传参的实例
Father.html
<head>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#btn").click(function (e) {
var stuObj = { name: "xy", age: 22 };
var whObj = { width: 300, height: 200 };
var returnValue = openShowModalDialog("Son.html", stuObj, whObj, e);
if (returnValue) {
alert("传回来的name:" + returnValue.name);
}
});
});
</script>
</head>
<body>
<input id="btn" type="button" value="模态测试按钮" />
</body>
Son.html
<head>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
// 接收父窗口参数
var obj = window.dialogArguments;
alert("name:" + obj.name + "age:" + obj.age);
// 回传参数至父窗口
window.returnValue = { name: "lily", age: 21 };
window.close();
});
</script>
</head>
兼容性问题
发现问题
对话框在firefox仍可拉伸大小,并显示地址栏
解决办法
1 在Firefox地址栏中输入about:config
2 在Filter中输入dom.disable_window_open_feature.location
3 双击赋值,将true改为false
以上解决办法只能让firefox不显示地址栏,但仍可以拉伸。
其实window.showModalDialog本来就是ie的方法,FF对其支持难免有些不足。
相关文章推荐
- js中window.showModalDialog各浏览器居中和传参实例兼以及一些兼容性问题
- js 在不同浏览器中一些常见的兼容性问题
- 关于原生事件绑定中attachEvent与addEventlistener中兼容性以及attachEvent函数中this指代window问题
- 浅谈一些栈帧的问题以及相关实例
- JS窗口问题处理:使弹出窗口保持前端显示的几种方法,及window窗体对象open()和showModalDialog()用法
- js和浏览器的各种兼容性问题
- DOM(一)一些属性方法介绍以及兼容性问题
- 用JS判断浏览器是否是IE9以下,处理可能遇到的兼容性问题,或者给出浏览器版本过低的升级提醒。
- 关于导航在浏览器中的定位以及div居中问题
- 整理浏览器对网页的兼容性问题(一)——JS&DOM篇
- CSS、JS在不同浏览器的兼容性问题
- IE 浏览器js 中文传参出现乱码问题的解决办法
- window.showModalDialog浏览器不支持后使用window.open代码问题处理方法
- JS无提示关闭浏览器窗口脚本以及不同浏览器对window.close()不同表现
- 前端-浏览器常见兼容性问题以及解决方案
- js函数在window.location.href跳转页面传参由于空格引发的一个小问题
- JS中单引号/双引号以及外部js引入的一些问题
- document.body的一些用法以及js中的常见问题
- js的window.showModalDialog及window.open用法实例分析
- vue.js添加一些触摸事件以及安装fastclick的实例