我們想要什麼
已發表: 2022-03-10我認為我們會遇到麻煩,儘管我不能肯定地說。 麻煩——我知道的麻煩。 不過,它的入口; 我只聽說過。 我只做了十年。 上次我錯過了所有的引導。 我可以肯定地說——我從經驗中知道的——是我從來沒有在憤怒中實現過一個不後悔的願望。
十年(我不介意說)是一段相當長的時間。 回到當我第一次踏入網頁設計實習的道路時,好的 ol' Internet Explorer 已經是一個笑柄。
“如果你注意到你的一部分內容出現又消失,並且頁面的某些部分只畫了一半,這些都是元素需要佈局的良好跡象。 [...]hasLayout
修復只涉及聲明一個 CSS 屬性,該屬性會導致元素獲得佈局,而默認情況下它通常不會有佈局。”
— Internet Explorer hasLayout 屬性
我討厭 IE。 我覺得我現在可以應付了。 我盡量不這樣做; 我真的,真誠地做到了。 我會告訴人們支持很有趣,如果你能相信的話。
隨著所有其他瀏覽器變得越來越容易處理,我試圖說服自己至少對古怪的舊 IE 仍然存在挑戰。 這甚至成為了一種自豪感:我非常擅長修復晦澀難懂的 IE 問題,以至於在我的日常開發過程中學會了避開它們,沒有什麼(好吧,更少)害怕大“開放”它在 IE 中,看看什麼壞了”階段。
在某種程度上,這很有趣。 好玩。 那是我對自己說的謊言。
/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including “inherit”) without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
— jQuery 移動源
我討厭它。 我對 IE 的每一個化身都非常討厭,在會議上的惡作劇。 我和其他人一樣討厭它。
“Internet Explorer 6 有一個令人費解的錯誤,涉及多個浮動元素; 最後一個浮動元素中的文本字符有時會在最後一個浮動元素下方重複。 ... 直接原因只不過是普通的 HTML 註釋,例如<!-- end left column -->
,夾在按順序出現的浮點數之間。”
— Explorer 6 重複字符錯誤
浪費我該死的時間就是這樣。 所有這些小時,我都在一個笨拙的虛擬機上彎腰駝背——重新加載,等待,對一個無意義的錯誤進行無意義的修復,重新加載,崩潰,再次打開 IE,等待,仔細檢查緩存是否不是一個因素,重新加載,等待,並重複。 我本可以利用我的時間做更多的事情——我可以學到更多。
我確信它不僅阻礙了我的工作,它不僅阻礙了網絡,而且阻礙了我作為一名開發人員。 關於第二點,我想我並沒有完全錯——我積累的所有晦澀難懂的 IE 6-7 瀏覽器錯誤知識現在都毫無用處。 我所要展示的只是對“過濾器”這個詞的一種不自覺的退縮,一種對padding
而不是margin
的不可思議的偏好,以及一種根深蒂固但基本上沒有根據的對z-index
的恐懼。
“……如果實際的類名是其他類名的子字符串(或超字符串),額外的空格會導致錯誤的樣式被選中。”
— IE5/Mac 空格解析錯誤
我希望它會消失。 被法律禁止的一種聰明且廣泛傳播的病毒卸載後,微軟最終決定減少他們劣質渲染引擎的損失並改用 Firefox 的渲染引擎 Gecko——不管怎樣——讓它消失。 但不是。 網絡不斷發展,我們開發人員奮力前行,逆流而上,不斷回到過去。
Chrome 出現了,Firefox 不斷變得更好,新功能不斷推出,響應式網頁設計的出現所帶來的令人興奮和無限的可能性在我們面前展開,而且(順便說一句)記住你只有幾天的時間讓它在舊 IE 中或多或少地工作,所以不要太得意忘形。
“如果您使用的是 IE8,並且您使用的是上述 CSS 有序列表編號方法,並且具有使用counter-reset
和counter-increment
CSS 屬性的類的 HTML 在頁面加載時是隱藏的,那麼無論何時隱藏顯示 HTML,所有自動數字都將為零,但前提是該頁面上使用了 CSS:hover
PSEUDO-CLASS!”
— IE8“懸停”錯誤:有史以來最令人敬畏的 IE 錯誤?
很難想像現在會經歷這種挫敗感,至少對於我們這些相對較老的人來說。 並不是說這些天在跨瀏覽器上進行調整所涉及的工作量並不多——我非常清楚有。 但是當你聽說 CSS Grid 在一個瀏覽器上的工作方式略有不同時,很難不感到偶爾的痛苦,“在我的時代,我們只有浮動,讓我告訴你 IE 的雙邊距錯誤”給另一個。
我錯了; 我想明確這一點。 沮喪並沒有錯。 我認為不應該責怪任何人對那些舊的瀏覽器錯誤感到沮喪,就像我不認為任何人應該因為他們現在對 Web 開發的任何方面的沮喪而受到責備一樣。 不,我對憤怒帶給我的結論是錯誤的:希望看到三叉戟被燒毀,曾經站立的土地被鹽漬化。
我懷疑從這片鹽鹼地中只會產生一種具有戲劇性諷刺意味的東西:對於新一代的 Web 開發人員來說,同樣的挫敗感,重新誕生。 當我開始我的職業生涯時,也就是瀏覽器大戰之後的幾年,這些種子已經生根發芽了。 因為,有一段時間——在我之前的一段時間——我們 Web 開發人員以同樣的方式詛咒 Netscape。 更弱、更錯誤、更糟糕的瀏覽器。 但是 Internet Explorer——開發人員喜歡那個瀏覽器。 他們希望那些其他瀏覽器——壞的瀏覽器——能夠消失:被一種聰明且廣泛傳播的病毒卸載,被法律禁止,Netscape 最終決定減少他們劣質渲染引擎的損失,並切換到 IE 的渲染引擎 Trident——不管怎樣——只是讓它消失。 那些難以理解的 Internet Explorer 錯誤並非巧合或疏忽。 它們的出現是因為 Internet Explorer贏了,我們喜歡它是因為它贏了。
看,我們的挫敗感和憤怒像往常一樣欺騙了我們。 他們告訴我們,支持其他更糟糕的瀏覽器不僅阻礙了我們的工作,也不僅阻礙了網絡,而且阻礙了我們作為開發人員。 浪費我們該死的時間就是這樣。 所以,我們告訴自己,這不僅是為了我們自己的利益,也是為了整個網絡的利益。
我們對 IE 的權重稍微重了一點。 我們在我們的決定中給予了它更多的發言權。 就這樣,拿著這麼多芯片的微軟相應地打了他們的牌——誰能怪他們呢? 每個人首先為他們建立網站,然後其他人。 他們的話不是法律,但肯定不僅僅是建議。 當然,它們到處都偏離了網絡標準(只是一點點),但畢竟,The Biggest Browser 實現的東西不是一種事實上的標準嗎? 此外,支持更好、更快、更簡單的瀏覽器就是為網絡本身提供服務! 我們與 Microsoft 一起推動網絡向前發展! 每個人都贏了。
今天為微軟 Edge 瀏覽器提供支持的渲染引擎——EdgeHTML——是老舊 Trident 的一個分支。 毫無疑問,它是 Trident 的一個精簡和大幅改進的分支,但它並不是,可以說,普遍地根據其自身的優點來判斷。 EdgeHTML 團隊一直在處理一些缺點:首先是技術上的,因為它需要花費大量的時間和精力才能趕上 Safari、Firefox 和 Chrome 之類的東西。 第二個是情緒化的。 是我們——你和我——厭倦了多年的 Internet Explorer,冷冷地盯著一個歡快的藍色小寫字母“e”。
幾週前,Edge 團隊宣布他們將很快放棄 EdgeHTML,轉而使用支持 Chrome 的渲染引擎 Blink。 隨著這一變化,三叉戟最後剩下的餘燼將被永遠熄滅。 我與這麼多人分享的願望最終將實現。 具有諷刺意味的是——事實證明——EdgeHTML 正在成為一個非常可靠的渲染引擎。
Blink 是一個由 Google 領導和管理的開源項目。 它為 Chrome 和 Opera 提供支持,後者在幾年前同樣放棄了他們自己開發的渲染引擎。
以壓倒性優勢,Blink 是(並將越來越多地成為)世界各地的網絡體驗方式。 Blink 快速、穩定、包含現代功能,並且 - 與仍在發展的 EdgeHTML 的開發相比 -無痛。
將我們從那些古老的 IE 錯誤中拯救出來可能為時已晚,但現在我們的工作將更容易,因為支持的渲染引擎減少了。 你和我將失去一點我們集體的“但它是否可以跨瀏覽器工作”的負擔。 我們的項目會更順利,網絡會失去一些曾經阻礙它的東西。
作為網絡引擎的管理者,谷歌的話不會是法律,但肯定不僅僅是建議。 也許在接下來的幾年裡,它們會以最微小的方式到處偏離 Web 標準(無論是有意還是無意)。 但畢竟,由 The Biggest Browser 實現的東西本身不就是一種事實上的標準嗎? 再說了,你怎麼爭辯? 畢竟,偏愛更好、更快、更強大的瀏覽器正在為網絡本身提供服務。 我們將與 Google 一起推動網絡向前發展。 每個人都會贏。
也就是說,只要很少的標準偏差和微小的、嘮叨的錯誤不會隨著時間的推移而變得更大——這要歸功於熵和自滿的雙重力量。 除非我們為了網絡的利益而做出的決定(與一家臭名昭著的隱私敵對廣告公司攜手合作)開始感覺有點陰暗,並且一個新的惡魔開始在我們的腦海中形成——除非我們發現我們過去的恐懼和挫敗感再次升起(就像一隻鳳凰,它渲染了幾百像素的距離,當你滾動時,它會以一種奇怪的方式閃爍)。
在接下來的幾年中看到更新、更令人興奮的渲染引擎並不需要太多的想像力。 由於缺乏支持而看到它們失敗,就像我們偏愛“每個人都使用的瀏覽器”一樣——首先是選擇,後來可能是勉強為“底線”服務。
不過,我也不知道。 我自己從未見過渲染引擎會發生這種情況。 我剛剛聽到了整個故事,我只知道第一手的故事結局。 我從舊的精神傷疤的痛苦中知道結局; 來自對某些代碼的不自覺退縮,以及迫使我避開其他代碼的肌肉記憶。 我從會議談話中的笑話中知道了這一點,這些笑話總是讓人覺得有點累,但仍然以一種我不允許自己承認的方式產生共鳴,並且仍然說出了我內心深處的一個秘密願望。 一個苦澀的、可恨的願望。
但是,嘿,聽著。 不再。 現在,我的意思是——我永遠不會。 我真的很喜歡一個好的渲染引擎錯誤,現在。 我願意。
“使用perspective()
的 CSS 3D 變換是由內向外渲染的。”
— bugs.chromium.org
我的意思是,這實際上是一個有趣的錯誤,對吧? 就像,在某種程度上很有趣。 你知道嗎?
好有趣。
會很有趣的。