IE9下uploadify在模态窗口里无法弹出选择文件窗口的问题

原创 2013年06月17日 11:17:02
公司的新项目用了高端洋气的uploadify,看起来比原来的老掉牙上传附件功能要“炫酷”多了。我用我的破XP里的IE8开发时没碰到什么问题,后来测试用IE9一测就有各种问题了。
如果把uploadify放在一个模态窗口里,window.showModalDialog("URL", "", "params");
IE9再点击上传控件时,就会没有任何。当把模态窗口关闭时,选择的文件窗口才会弹出来。更雷人的是,当把这个选择文件窗口关闭时,IE9直接卡死崩溃,屡重现不爽,销魂指数高达五星。
另外值得一提的是,同样的问题也出现在另一款jquery的flash上传控件AjaxUploader之中,看来所有维护jquery+flash上传控件的团队都需要在IE9下重新测试一下自己的项目了。

这个问题,搞了半天也没搞出什么太像样的解决方案。后来想出一个略囧的半解决方案:用非模态窗口去代替有上传控件的模态窗口。

function uploadAppendix(){
    if (win==null){
            win = window.showModelessDialog("URL", window, "params");
    }
}

既然是非模态窗口,有许多东西就要自己控制了。加上win==null这个if块,防止用户点开一个上传窗口之后,再点开另一个上传窗口。其他可能与上传窗口存在冲突操作的按钮或者链接什么的,也需要加上同样的if块限制。
再就是如果需要在关闭窗口时刷新父页面的话,务必得加上window这一项。模态窗口想刷新父页面很简单,只需要在父页面中打开模态窗口的地方接下来写一句location.reload(); 这样一关模态窗口,父页面就自动刷新了。
但是非模态窗口不能这么写,程序会不等你关窗口直接就把父页面刷新,非模态窗口也跟着马上消失了。所以刷新需要写在非模态窗口里而不是写在父页面里。传window进去其实就是把父页面传给非模态窗口,让模态窗口自己实现关闭时刷新父页面。

在非模态窗口的jsp里写:

// 刷新父窗口
window.onunload = function(){
    if (window!=null && window.dialogArguments!=null){
        window.dialogArguments.location.reload();
    }
};




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

解决模态弹出窗口与上传文件控件(uploadify)的冲突问题

// mod-s wxm 解决模态弹出窗口与上传主键的冲突问题 //return !noData || noData !== true && elem.getAttribute("classid") ...

模态窗口下ie6状态栏问题

首先ie6和ie8对于模态窗口的高度的计算方式不一样:ie6对于高度的计算是包括标题栏和状态栏的,而ie8的对于高度的计算是不包括标题栏和状态栏的,至于ie7则与ie8类似。虽然知道了这些区别可以很容...

js弹出模态窗口

MFC之如何弹出模态窗口

首先,说一下什么是模态窗口、什么是非模态窗口。 模态窗口:弹出之后只能在该窗口内操作,只有关闭该窗口之后才能进行对其他窗口进行操作。否则为非模态窗口。 当我们在做MFC设计的时候,我们也许想要点击...

华丽的模态窗口弹出效果示例

在你的品牌和网站访问者之间建立情感联系是非常重要的。模态弹出窗口可能会帮助您完成这个具有挑战性的任务, 作为一项常用规则,模态弹出窗口被用于各种号召行动的消息,如鼓励用户订阅新闻邮件, 下载一些免...

模态窗口(弹出框)整合CKEditor实战

需求背景: 电子合同项目下的合同模板新增页面中是用layer.js实现的弹出框,也叫模态窗口,用之前的summernote文本编辑器不符合当前编辑合同文本内容的需求(1:字体大小2:字体颜色3...

弹出的模态窗口(子窗口)中调用IE的打印预览功能,结果IE弹出错误:“当前页面发生脚步错误...错误:不支持该命令.

window.showModalDialog(theURL+"&ttime="+new Date().getTime(),wbxstr,"dialogWidth=986px;dialogHeight=...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)