webuploader在IE8/9下上传遇到的两个问题
最近在做图片上传功能。
点击一个按钮,弹出一个iframe,它是百度的webuploader插件
在点击关闭按钮时,IE9下总是会报错: __flash__removeCallback未定义错误
解决办法很简单,就是在关闭前直接清空含有此flash控件的dom元素。
原因在以下两篇博文里:http://blog.csdn.net/lanfeng330/article/details/8492910
http://blog.csdn.net/qq282030166/article/details/45308121
谢谢前辈。
另外,这个控件其自身有两种上传模式
在不支持HTML5上传的浏览器中(IE8/9等),会使用flash的方式进行上传
可是却发现报错了。通过跟踪发现,它有请求crossdomain.xml文件,这是什么鬼?
原来,
flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据。
位于www.a.com域中的SWF文件要访问www.b.com的文件时,SWF首先会检查www.b.com服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许www.a.com域访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml。
所以在初始化uploader时,定义的swf的路径如果是 abc.test.com/..../upload.swf
那么,这个xml文件就应该放在 abc.test.com的根目录下面,并且一定要确保 abc.test.com/crossdomain.xml可以直接访问到
但这时IE下依然请求不到这个文件,原因如下文所述
http://www.jianfangkk.com/aspnet/201501/206
所以最后解决方案是:
<system.webServer> <staticContent> <remove fileExtension=".xml" /> <mimeMap fileExtension=".xml" mimeType="text/plain" /> </staticContent> </system.webServer>