uploadify上传插件,在IE9中正常,但是一旦放到IE6中运行,就会出现,第一次上传成功,然后再次进入就上传不了,然后清空缓存后,又返回到前面情况:第一次上传能成功,关闭页面,再次进入上传方法失效的问题
Uploadify 是一款流行的JavaScript上传插件,它使用Flash技术实现文件的异步上传。在处理IE6浏览器时,由于其对某些Web技术的兼容性问题,可能会遇到上传功能时灵时不灵的情况。这个问题通常出现在首次上传成功后,再次尝试上传时失败,且清除缓存后会重复出现相同问题。
我们需要理解问题的根源。IE6对于Flash的支持存在一些限制,尤其是在处理动态内容和缓存方面。当Uploadify试图加载`uploadify.swf`文件时,由于浏览器的缓存机制,可能会加载到旧的或未更新的版本,导致上传功能失效。为了解决这个问题,我们可以采取以下策略:
1. **动态参数**:在`uploader`和`script`属性的URL末尾添加一个动态的查询字符串参数,如`var=(new Date()).getTime()`。这个参数的作用是每次加载时都会生成一个新的时间戳,使得浏览器认为这是一个新的资源,从而避免使用缓存的版本。例如:
```javascript
'uploader': '../i/Normal/HR/uploadify.swf?var=' + (new Date()).getTime(),
'script': 'uploadPhoto.ashx?var=' + (new Date()).getTime(),
```
这样,即使IE6有缓存,每次调用Uploadify时,它也会尝试获取带有最新时间戳的新文件,避免因缓存导致的问题。
2. **配置优化**:检查Uploadify的其他配置项,确保它们适用于IE6。例如,`auto`设置为`true`表示自动上传,`multi`设置为`false`表示一次只能选择一个文件上传。这些配置在IE6下应保持正确,以保证上传流程的顺利进行。
3. **事件处理**:在示例代码中,`onComplete`事件处理函数用于处理文件上传完成后的一些操作,如更新图片预览。确保在所有支持的浏览器中,这个事件都能正确触发和执行。
4. **其他兼容性措施**:除了上述解决方案,还可能需要针对IE6做一些额外的兼容性调整,比如CSS样式、DOM操作等。由于IE6的盒模型、CSS属性支持等方面与现代浏览器有所不同,可能需要特别处理。
5. **用户提示**:考虑到IE6的用户体验,可以增加一些友好的提示信息,让用户知道如何处理可能出现的上传问题,如刷新页面或清理缓存。
解决Uploadify在IE6中上传问题的关键在于处理浏览器的缓存和兼容性问题。通过动态生成URL参数,确保每次请求的资源都是最新的,可以有效避免IE6的缓存问题。同时,关注其他配置和事件处理的兼容性,以保证上传功能在旧版浏览器中稳定运行。