那些与 IE 相伴的日子
來源:零一
作者:前端印象
大家好,IE 大家都不陌生,畢竟出現(xiàn)在大家的視野中已經(jīng)很久很久,久到有20多年,當(dāng)然也因前端技術(shù)的快速更新,給需要兼容IE瀏覽器的前端程序員帶來了不少的困擾。
慢慢地,大家都在嘗試拋棄IE,比如Vue3考慮徹底放棄對IE的支持,甚至連微軟自己都決定在2021年8月17日起逐漸放棄支持IE
時間久了,對 IE 多少有點(diǎn)感情了,跟大家一起回顧一下跟 IE 的抗?fàn)幨钒?#xff01;
利用高渲染模式
因?yàn)?IE 不兼容的東西太多了,很多人都選擇使用相對比較高級的渲染模式。
<meta?http-equiv="X-UA-Compatible"?content="IE=Edge"> //?or <meta?http-equiv=”X-UA-Compatible”?content=”IE=edge,chrome=1″/>上面一個是使用Edge渲染模式來解析代碼;下面這個則是使用Chrome內(nèi)核,但你用Chrome內(nèi)核也得用戶安裝了才行啊,很多電腦僅有一個IE,你根本拿它沒辦法。
害!治標(biāo)不治本的辦法
我是Mac,哪來的IE?
直接好家伙!很多程序員的電腦都是Mac,你讓我如何從macOS系統(tǒng)里給你找IE瀏覽器出來啊?要不....再配一臺Windows電腦?拉倒吧!
幸虧很多國產(chǎn)瀏覽器都提供了IE內(nèi)核,也就是說你可以切換至IE內(nèi)核,強(qiáng)行模擬IE瀏覽器進(jìn)行調(diào)試,但這始終只是模仿呀,又不是真實(shí)環(huán)境
那只能安裝一個非常占空間的虛擬機(jī),借助它提供的Windows環(huán)境來調(diào)試IE瀏覽器了。
總之就是頭疼!
ECMAScript?新語法我一個用不了
大家用的最多的就是ES5的語法了吧,或者說在大多數(shù)人的概念里,ES5應(yīng)該是很低級的語法了,然而不爭氣的 IE 連對ES5的兼容性也不是那么完美
那么能怎么辦呢?總不能說為了兼容IE,放棄使用很多方便的新語法吧~?其實(shí)不止IE對ECMAScript新語法兼容性不好,這個支持程度都要看瀏覽器廠商的態(tài)度和效率的。所以我們也不得不為了兼容大部分瀏覽器而做各種"退化"操作,比如出了ES6的語法,而我們卻用ES5的語法去實(shí)現(xiàn)一遍ES6的語法(偷偷問一句,很多面試題是不是就這么來的?)
總之這么做不是個辦法,所以也孕育出了JQuery,它最大的好處就是幫我們簡化了代碼、做足了瀏覽器兼容,比如正常情況下元素的事件綁定和移除我們分別用的都是?addEventListener和 removeEventListener,而IE呢,分別是?attachEvent和 detachEvent。還有Ajax請求的寫法,IE也有它單獨(dú)的方法,正常的Ajax構(gòu)造函數(shù)是XMLHttpRequest,而IE則是?ActiveXObject
還好這些兼容JQuery都幫我們做了,那個時代,誰不夸一句JQuery好呢?真的難以想象,要是沒有站在巨人的肩膀上,開發(fā)得多累啊!
再bb一句,即使有了JQuery,IE還是有好多要兼容的地方,要吐了
CSS的使用總是差強(qiáng)人意
CSS3能讓我們用簡潔的語法完成花里胡哨的樣式,而IE不允許。
現(xiàn)在最最最常用的Flex布局,IE9及以下都不支持,及時IE10、IE11兼容程度也不是很理想。
那么怎么辦?
當(dāng)然是回歸原始了,定位、浮動梭哈!當(dāng)然也可以用table布局咯~
IE瀏覽器的CSS兼容能有多BT?
<!--[if?IE?6?]><?link?rel="stylesheet"?type="text/css"?media="all"?href="./ie6.css"?/> <?![endif]--><!--[if?lte?IE?8?]>?<link?rel="stylesheet"?type="text/css"?media="all"?href="./assets/css/ie8.css"?/>? <![endif]-->條件注釋是一種 IE 專有的、對常規(guī)(X)HTML 注釋的 Miscrosoft 擴(kuò)展。看代碼也大致能猜到啥意思了,就是針對不同的IE瀏覽器版本,加載不同的樣式文件,這這這...這也太麻煩了
路由支持程度不好
前后端不分離的時代過去以后,SPA的單頁面應(yīng)用成為了當(dāng)前的主流,那么路由的管理也就非常重要。眾所周知,路由一共有兩種:Hash 和 History,前者沒啥好說的,沒啥兼容問題,但url會顯得很丑;后者是HTML5新增的API,所以會有些兼容性問題,尤其是IE,但它解決了前者的缺點(diǎn),所以更多人還是喜歡用后者。
咋整?我寫個SPA應(yīng)用并且用了History管理路由,放到IE9及以下的瀏覽器上就不管用了?
其實(shí)就連市面上很成熟的Router庫都沒有兼容IE9及以下的瀏覽器,像vue-router對于IE9及以下不支持html5 history新特性,如果在IE9及以下的版本則自動降級為Hash。
那么放在普通的項(xiàng)目中,我們該如何使用History路由呢?同樣是站在巨人的肩膀上,借助一個叫 HTML5-History-API 的庫即可,這個庫就很明確告訴你是兼容IE9及以下的版本的。
IE退休了
IE終于要退出歷史舞臺了,2021年5月19日,微軟公司正式宣布,歷時26年后,IE瀏覽器將于2022年6月15日停用。也就是說IE將永遠(yuǎn)停留在IE11版本,微軟也終于接受了現(xiàn)實(shí)。
他們是心甘情愿放棄IE的嗎?當(dāng)然不是,存活26年的IE之所以能火起來只不過是得益于最先搶占市場以及Windows的捆綁安裝,而產(chǎn)品不用心維護(hù)迭代,最終還是被那些優(yōu)秀的瀏覽器給打敗了,放眼望去,在PC端的IE市場占有率僅有1%多一點(diǎn),早已被其它瀏覽器甩在后頭了。
圖來自于Statcounter
近日,谷歌搜索也發(fā)推特說明他們將不再支持IE11,原因很簡單,維護(hù)成本太大,這不就是我們開發(fā)時兼容IE的心聲嘛!
一些思考
IE提前退出歷史舞臺,是因?yàn)樗牟蛔鳛?#xff0c;與主流瀏覽器的不統(tǒng)一,獨(dú)樹一幟。程序員們的訴求是什么呢?希望市場上的瀏覽器能盡可能得統(tǒng)一,能按照同一套規(guī)范來實(shí)現(xiàn)功能,這樣能促使瀏覽器語言的快速發(fā)展與展現(xiàn),所有的注意力能放在業(yè)務(wù)、功能上,而不是兼容這個兼容那個!
好了,最后我再皮一下,下一個遭殃的瀏覽器是誰呢?評論區(qū)留下你的吐槽~
往期推薦
Facebook 遭遇史詩級故障!
數(shù)學(xué)在左,人生在右
Redis很厲害,使用規(guī)范來啦
攜手開發(fā)者,一起精準(zhǔn)打造數(shù)智未來!
點(diǎn)分享
點(diǎn)收藏
點(diǎn)點(diǎn)贊
點(diǎn)在看
總結(jié)
以上是生活随笔為你收集整理的那些与 IE 相伴的日子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 携程发布2021第三季度财报:营收53亿
- 下一篇: 易点云在京发布璇玑调度系统 中小企业办公