关闭

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

标签: IE9jQuery控件Flashuploadify
2104人阅读 评论(0) 收藏 举报
分类:
公司的新项目用了高端洋气的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();
    }
};




0
0
猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:26243次
    • 积分:660
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:28篇
    • 评论:1条
    文章分类
    最新评论