導語
瀏覽器兼容問題是前端人員經常遇到和必須解決的問題,其中最獨樹一幟的就是IE瀏覽器了盖淡,沒錯年柠,兼容IE絕對是每個前端人員最頭痛的事情。關于一些常規(guī)樣式的兼容就不啰嗦了,網上已經有很多通用的樣式設置冗恨,如:reset.css答憔。這里給大家分享一下我在最近的項目開發(fā)中關于IE瀏覽器踩得一些坑。
1.IE11中輸入框無法輸入-間歇性精神智障
首先這個問題出現(xiàn)的場景是你的html是嵌入在一個IFrame中掀抹,通過選項卡切換IFrame的src的過程中html中的輸入框有時候無法輸入虐拓,這個問題在不同的機子上出現(xiàn)的概率還不一樣,有的百分之三十傲武,有的百分之五十蓉驹,真的可以說是間歇性精神智障。
這個智障問題有時候可以通過一些小動作讓它恢復正常揪利,比如在iframe中右鍵刷新一下态兴,或者按'TAB'鍵將焦點切換到任何一個文本框,這時疟位,所有的文本框都可以用點擊正常獲得焦點了瞻润,真的是非常變態(tài)。但是這里我要為我們的測試小伙伴點個贊甜刻,能分析到這個程度你真的是很敬業(yè)[閑啊]绍撞,還是非常感謝你給了我解決思路。
經過一番努力得院,我發(fā)現(xiàn)楚午,手動調用一下任何一個(通常是第一個)文本框的focus()方法就可以讓所有的文本框恢復神智了。于是寫了一個公共腳本尿招,在頁面加載完成后,獲取第一個文本框并讓其focus()和blur()阱驾,經測百來次就谜,再沒碰見無法獲取焦點的情況,問題解決里覆。
貼代碼
$(function(){
//解決IE11文本框無法輸入
$("input[type='text']").eq(0).focus();
$("input[type='text']").eq(0).blur();
})
2.ie10丧荐、11頁面刷新,文本框不恢復默認值-強刷啊喧枷,解決
頁面有一個文本框虹统,我在里面寫了點文字,當我刷新瀏覽器的時候隧甚,這個文本框不清空车荔,還是原來的文字,但是我如果通過切換iframe的src打開頁面戚扳,此時文本框是空的忧便。
本來想用cookie做,但是發(fā)現(xiàn)只有在瀏覽器關閉了以后才會清除cookie帽借,所以最直接的方法想著等頁面加載完成后手動清空珠增,但是很抱歉超歌,刷新之后竟然還在!5俳獭巍举!這里必須要加個計時器,至于原因我還沒有想到凝垛,只是覺得很變態(tài)懊悯。
貼代碼
$(function(){
setTimeout(function(){
$("input[type='text']").val('');
}, 30);
})
3. 組件在IE11不支持搜狗中文輸入-表示很無奈
在vue項目中,比較受歡迎的UI框架應該非elememt-ui莫屬了苔严,經過了一番調研定枷,還是決定使用它了,但是卻被 這個組件坑慘了届氢,竟然在IE11中不讓用搜狗輸入法輸入中文欠窒,注意英文可以,或者其他的輸入法也是可以輸入中文的退子,這里我對我們的測試小伙伴已經達到了膜拜的程度岖妄。
我找到餓了么團隊的論壇,發(fā)現(xiàn)果然有這個bug
看到這里我的內心是崩潰的寂祥,無奈只能將編譯模式改為IE10荐虐。這里提醒大家使用組件之前一定要調研好!M杵尽福扬!
貼代碼
4.在IE瀏覽器下 input type="text"文本框點擊時后面會出現(xiàn)"X",以及type="password"后面會出現(xiàn)眼睛
解決方案
::-ms-clear,::-ms-reveal{display:none;}
注:IE9-不識別