解决谷歌浏览器不支持模态窗口返回值的问题
来源:互联网 发布:32寸网络电视价格 编辑:程序博客网 时间:2024/06/05 14:37
window.showModalDialog(url, parameter, winStyle)用于在当前窗口打开一个子窗口,并返回子窗口中设置的返回值。正常情况下,它可以实现在子窗口关闭后返回值到父窗口,但是在谷歌浏览器中发现,获取不到返回值。
解决方法如下:
1、可以在子页面中,窗口关闭时直接设置父页面的值,这样就不需要获取返回值;
2、如果子页面被多个地方调用,不期望修改子页面。可以在父页面加一个判断,当浏览不是chrome时,正常使用showModalDialog;
当为chrome时,使用window.open代替: var windowOpen=window.open()得到子页面对象,windowOpen.returnValue就可以拿到返回值
直接这样调用的话会发现返回值还是获取不到,原因可能是window.open不会阻塞原方法,就是它不会等到子页面输入完成再return,而是直接return了,所以获取不到。
这时,①、可以在父页面加一个setInterval监听子页面的关闭,检测到页面关闭时,就可以获取到返回值。
②、也可以在子页面关闭时回调父页面的js方法。
部分代码:
if(navigator.userAgent.indexOf("Chrome")>-1){
var winOpen=window.open(url,"_blank",winStyle);
var timer=window.setInterval(function(){
if(winOpen.closed==true){
if(winOpen.returnValue!=null){
//业务代码,winOpen.returnValue就是从子页面获取的返回值
}
}
});
}else{
if(window.showModalDialog){
return window.showModalDialog(url, parameter, winStyle);
}
}
- 解决谷歌浏览器不支持模态窗口返回值的问题
- IE8不支持模态窗口的问题
- 解决谷歌浏览器不支持12px以下小字体的问题
- 解决浏览器不支持javascript问题
- HTML5--解决浏览器不支持问题
- 谷歌浏览器不支持showModalDialog模态对话框的解决方法
- 使用cef3开发的浏览器不支持flash问题的解决
- 解决浏览器(IE)不支持Data.parse()的问题
- 代码解决 有些浏览器不支持placeholder特性的问题
- 解决IE8以下浏览器不支持CSS属性opacity的问题
- 解决IE浏览器不支持CSS样式呈现的问题
- 解决IE浏览器文本输入框不支持placeholder的问题
- 解决谷歌chrome浏览器新版 58以上不支持浏览器编码的解决办法
- 新建有返回值的线程的窗口(修改的窗口有问题不懂解决)
- window.showdialog完全手册,解决模态窗口,传值和返回值问题
- window.showdialog完全手册,解决模态窗口,传值和返回值问题
- window.showdialog完全手册,解决模态窗口,传值和返回值问题
- window.showdialog showModalDialog 完全手册,解决模态窗口,传值和返回值问题
- dubboConsumer调用dubboProvider成功
- Mysql索引的使用
- 欢迎使用CSDN-markdown编辑器
- JS格式化从数据库中取出的时间
- c结构体对齐深刻理解
- 解决谷歌浏览器不支持模态窗口返回值的问题
- Problem A: 数组类(I)
- C++学习之vector重复元素的去除和求vector中最大最小元素及其索引
- MATLAB常用形态学操作函数
- CSU-1839 Who Feels Lucky(数形结合)
- font-family与font-face区别
- Hibernate之:各种主键生成策略与配置详解
- spring.profiles.default
- 关于浏览器被hao123劫持的解决办法