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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM