js中window showModalDialog各浏览器居中和传参实例兼以及一些兼容性问题

本文介绍了JavaScript中使用window.showModalDialog方法实现弹窗居中和传递参数的技巧,包括针对IE和Firefox的不同处理方式。详细展示了如何计算模态窗口的居中位置,并提供了实例代码。同时,文章讨论了showModalDialog在Firefox的兼容性问题,包括对话框可拉伸和显示地址栏,以及如何通过修改配置来缓解这一问题。

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

               

 

浏览器居中以及传参实例

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对其支持难免有些不足。

 

 

           

浏览人工智能教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值