最近在做圖片上傳功能。
點擊一個按鈕,彈出一個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>