因爲此次項目的定製化開發是面向國企的.需求主要集中在如下三點:css
此次的定製化開發是在以前的老代碼上添加新功能.老代碼是12年用extjs 4.1編寫的.如今基本上沒有幾我的會寫extjs代碼,而且客戶要求一個多月就要現場演示.因此最後決定用vue2+element2,而後掛載到extjs代碼上.html
下面就開始總結此次IE9踩坑.vue
修復v-for在IE上不能編譯和v-loading中止的問題.jquery
最開始使用的是最新版2.5.16.後來發現v-for在IE上沒法編譯.後來在issue #7946 上找到最簡單的辦法就是將版本降到2.5.15.而後問題解決了.考慮到時效性,可能後續版本又解決這個問題了.因此各位選擇本身合適的版本. 補充: 因爲老代碼用的是highcharts 3.在配合v-loading時,有時v-loading不能關閉.目前還沒找到好的解決辦法.如今是經過定時器在半秒後再關閉.固然你也能夠用el-dialog來作個loading(=.=)css3
解決ES6語法解析問題 雖然polyfill能夠轉換ES6語法.可是建議編寫時仍是使用ES5語法以防萬一.ajax
雖然IE9支持部分css3,但仍是頗有限,像flex佈局,CSS3動畫這種就仍是算了.json
作到以上三點,基本上能夠杜絕大部分常見的IE bug.但仍是有一些bug是不能避免的.下面就逐個踩坑介紹.你們有遇到其餘的,歡迎補充添加. ==注意:== 建議你們儘可能減小使用watch.由於IE9對它的性能開銷很大!後端
el-table在IE瀏覽器中常常會出現.中間的border線消失的問題.應該是IE邊框計算的問題,加上以下代碼就好了瀏覽器
.el-table__body, .el-table__footer, .el-table__header {
border-collapse: separate !important;
}
複製代碼
在使用el-table有橫向滾動條時,發如今IE9上會出現table高度忽增忽減的狀況.恭喜你遇到了IE9的專屬bug! 這個bug在IE10上是已經修復了的.babel
overflow-x:auto
<div style="height: 100%"></div>
但有時這樣可能會影響css樣式.這時你還能夠選擇在父級元素上加上hover .father:hover{ height:100%;}
el-table__body-wrappe
上加height:100%
.el-table__body-wrapper{
height: 100%;
}
複製代碼
elementUI在IE9下radio,checkbox的樣式不一致.緣由就是使用了CSS3的transform和transition屬性. 解決辦法: 解決辦法是很簡單的,也是基本操做.就是給element的transform和transition屬性加上-ms-.
.el-select .el-input .el-select__caret{
-ms-transition: transform .3s;
-ms-transform: rotateZ(180deg);
}
複製代碼
在使用el-input v-model的值有時不能根據輸入的值實時變化.目前還不是太瞭解是什麼緣由形成的. 解決辦法:
使用原生input框: 經測試使用原生input, v-model是能夠正常變化的.若是你想保持v-input的樣式.能夠給原生input加上el-input__inner的class.
若是須要繼續使用v-input則須要添加@change事件.@change="function(modelVal){inputVal=modelVal}"
.這時每次輸完失焦後,都會觸發change事件將v-model值傳給inputVal.固然你不想邊輸入邊變化也能夠用input事件.
目前的解決辦法仍是經過jquery.form解決的. jq的兼容性和插件庫仍是最好最豐富的.建議大型複雜項目,最好都引入jQuery! 以備不時之需! 這裏在引入jQuery後,再引入jquery.form插件.使用仍是很是簡單的.不會的能夠查看下面這個例子:
<form id='fileForm' enctype="multipart/form-data" methods="post">
<input type="file" id="fileInput" @change="update">
<form>
複製代碼
update:function(){
var _this=this;
$('#fileForm').ajaxSubmit({
url:url, //url地址
type:'post',
enctype:'multipart/form-data',
dataType:'json',
success: function(res){
$('#fileForm').restForm(); //重置表單
if(res.code===0){
console.log('上傳成功')
}
}
})
}
複製代碼
強烈警告: 在IE9中,若是返回的content-type爲json格式時,此時IE會自動彈出下載彈窗,提醒你下載該文件.此時,須要後端將content-type改成text/html形式,切記!!!