情况:界面里嵌套了一个iframe,iframe里面放了一个plupload 控件,在 ie9下 ,默认隐藏 iframe,过几秒后显示iframe,上传无效。
观察发现,如果是plupload显示的状况下,ie9 是采用runtime 为 flash ,右键可看出是flash,如果 plupload隐藏,过几秒钟等他渲染好了,你再把他显示出来,右键可以看出,他用的是silverlight。
强制 pluploadruntime为 flash的话,隐藏 plupload,过几秒他就直接提示错误信息。 上传失败!错误代码- 500,错误信息 init error。可见隐藏的情况下,他渲染的不好,没有按照flash渲染,而是采用其他的方式。
解决问题方法:第一次显示出来的时候重新给iframe 复制。
$('#ifrmTest).attr('src', $('#ifrmTest).attr('src')+"&r=123456");
//文档如果一开始就是显示状态,就直接实例化。如果不是,等到resize事件触发的时候再初始化,否则在ie9下,隐藏再显示的情况,初始化不按照默认的falsh来初始化而是采用其他机制,导致问题。(几秒钟没有显示iframe的话,出现这种情况)
//隐藏的上传控件第一次显示的时候重新加载下,否则几秒种后再显示出来,渲染会有问题 (ie9)