兼容ie8(WebUploader+class+prototype)

最近公司有個jq寫的老項目(手動微笑),要兼容ie8,出現了些問題

1.樣式醜

用hack\9直接寫ie8的樣式html

2.js的trim,indexOf報錯

用prototype新寫了方法html5

if (!Array.prototype.indexOf){
    Array.prototype.indexOf = function(elt){
        var len = this.length || 0
        var from = Number(arguments[1]) || 0
        from = (from < 0) ? Math.ceil(from) : Math.floor(from)
        if (from < 0)   from += len
        for (; from < len; from++)  {
            if (from in this && this[from] === elt) {
                return from
            }
        }
        return -1
    }
}
if (!String.prototype.trim){
    String.prototype.trim = function(elt){
        return $.trim(this)
    }
}
複製代碼

3.還有個本地請求不行

原來是ie8不支持跨域,由於我設置的是nginx反向代理請求用的cors
彷佛設置一下ie就能跨,可是我一想,發到線上是不用跨域的,因此就沒去管

WebUploader1.6.0報錯

報錯大概是第二個紅箭頭位置
第一個紅箭頭,監視出來是 [html5, flash]
查了一下,WebUploader1有html5和flash倆種模式,ie8確定不支持html5的

1.首先加一個
<meta http-equiv="X-UA-Compatible" content="IE=edge">
複製代碼
2.而後網上下了Uploader.swf, 找到調用方法的地方(也就是咱們開發者本身的配置js),把flash路徑寫對,
再往ie上安裝了flash。就ok了
var uploader = WebUploader.create({
    auto: true,// 選完文件後,是否自動上傳。
    // swf文件路徑
    swf: '../../js/plugin/webuploader/Uploader.swf',
    paste: document.body,

    // 文件接收服務端。
    server: serverUrl+"files/upload",
    formData:postData,
    ...
複製代碼

提及來很簡單啊,可是實踐的時候一條條辦法也是很辛苦的啦nginx

相關文章
相關標籤/搜索