瀏覽器兼容性問題的誘因
瀏覽器的兼容性問題,是我們在后端開發過程中必需要考慮到的問題,目前市面上的瀏覽器種類好多,所以造成對我們的代碼的解析會存在多多少少的差別,而且有時侯我們又必需要使用存在差別的代碼,此時就須要對代碼進行兼容性處理。主流瀏覽器的內核基本太原小異,這兒大致可分為四種:Webkit內核、Presto內核、Trident內核、Gecko內核。右圖為國外常見瀏覽器的內核對比:
常見的瀏覽器兼容性問題以及解決辦法
問題1:不同瀏覽器的元素標簽默認的內外行距不同
解決方式:在全局css中使用轉義處理*{margin:0;padding:0;}
問題2:img標簽默認有寬度
解決方式:使img浮動
問題3:cursor屬性的兼容性問題
解決方式:firefox不支持hand,但ie支持pointer,統一使用pointer
問題4:IE瀏覽器不辨識min-標志
解決方式:將二者都寫上,比如width:80px;height:35px;min-width:80px;min-height:35px;
問題5:JS獲取瀏覽器窗口大小的兼容性問題
解決方式:使用兼容性寫法,比如:獲取網頁內容實際寬高的寫法
varscroll_w=document.documentElement.scrollWidth||document.body.scrollWidth;
varscroll_h=document.documentElement.scrollHeight||document.body.scrollHeight;
問題6:event風波問題
解決方式:兼容性寫法:document.onclick=function(ev){vare=ev||window.event;//獲取到event對象}
問題7:JS中innerText問題
解決方式:IE瀏覽器中使用textContent
問題8:JS中設置風波與移除風波的問題
解決方式:
function addEvent(obj,type,fn){//添加事件監聽,參數分別為 對象、事件類型、事件處理機制(冒泡或捕獲),默認為false
if (obj.addEventListener) {
obj.addEventListener(type,fn,false);//非IE
}
蘋果iPhone 15系列使用USB-C接口已是板上釘釘的事情,不過近日有消息指,iPhone 15系列的C口非但不兼容安卓,而且iPhone 15傳輸速度停留在USB 2.0水平。
看到這里相信不少小伙伴會為蘋果的騷操作感到迷惑,其實在蘋果歷史上關于接口騷操作遠不止這點。
Lightning:老而不死是為賊
Lightning,在售iPhone所用的接口,也是iPhone歷史上使用時間最長的接口,首發于2012年推出的iPhone 5手機之上。
Lightning正反兩面各有8 Pin觸點,正插反插均可,使用起來更為方便,而且尺寸比老式30針Dock接口減少了80%,因此iPhone 5能夠比iPhone 4S做得更薄。
同時蘋果在Lightning的插座內設計了鎖定機構,大大提升了牢固度。后來,蘋果把Lightning接口應用到AirPods、iPad不同設備上。
不過Lightning接口缺點同樣明顯,首先是觸點是暴露在外面的,數據線容易損壞。
其次Lightning采用的是USB 2.0協議,理論帶寬只有480Mbps,拷貝數據非常慢。
第三Lightning數據線要通過MFI授權,植入蘋果的專用芯片,也就是常說的“蘋果稅”,大大提升了使用成本。
Lightning是一個優缺點并存的接口,正反可插設計在當年更是備受稱贊。
蘋果真正騷操作是為了蘋果稅把Lightning用到2023年,要知道2015年Macbook已配備USB Type-C接口,在2017年iPad Pro也用上USB Type-C接口,直到歐盟要求才心不甘情不愿地淘汰Lightning。
Dock接口:用力過猛
說到這里不得不提一下iPhone的老30針Dock接口,它將USB協議、IEEE 1394協議、充電、12V供電、音頻輸出等多個功能整合在一起,而且每個功能都要獨立針腳。
結果用力過猛,弄出一個針腳數比HDMI還多的接口。在USB(通用串行總線)誕生、普及多年后,蘋果能弄出這樣一個怪胎實屬不容易。
IEEE 1394:蘋果稅是有傳統的
IEEE 1394,又叫FireWire(火線)、i.Link、Lynx,是一個蘋果主導的接口,它性能強勁,最初版本FireWire 400 (IEEE 1394-1995)帶寬達到了400Mbps,最多可串聯63個設備,全方位吊打同時代的USB接口。
然而蘋果希望自己能在每個接口上收取1至2美元的許可費,若聯盟內其它廠商也收取同樣費用,一個IEEE 1394接口許可費將高達10多美元,加上接口性能過剩,最終它被廉價的USB接口打敗,喬布斯也在2008年宣布FireWire已“壽終正寢”。
如果說蘋果是IEEE 1394中的臥龍,那鳳雛一定是索尼,索尼將IEEE 1394小型化,針腳從6針減少到4針,去掉供電能力,用于攝像機、筆記本電腦等小型化設備。
然而,索尼沒有設計好鎖定裝置,輕輕一碰數據線就能掉下(別問我為何知道的,我當時用的還是貝爾金數據線),做事風格相當日本特色,后來的HDMI也犯了同樣錯誤。
Mini DisplayPort:小型化個寂寞
Mini DisplayPort是一個蘋果在2008年推出的顯示接口,正如它的名字,這是一個迷你化的DisplayPort接口。
大小從DisplayPort的16.10mm*4.76mm減少到7.5mm*4.6mm,在2009年VESA宣布將Mini DisplayPort納入即將出臺的DisplayPort 1.2規范當中,從此變成正規軍。
比USB還厚的Mini DisplayPort
然而在Mini DisplayPort上蘋果沒有考慮接口鎖定問題,于是Matrox在2009年推出的8屏輸出顯卡M9188的Mini DisplayPort接口上方加入了鎖定用的螺絲孔。
另一方面Mini DisplayPort比USB-A接口還厚,難以塞在超薄筆記本中,在Thunderbolt接口誕生后,迅速被淘汰,在DisplayPort依然活躍的今天,消費者電子市場再無設備使用Mini DisplayPort。
USB-C:標準也能出錯?
USB -C,這不是標準接口么,出事也能怪到蘋果頭上?事實上這很可能也是蘋果騷操作之一。
不知大家是否有聽過說iPad Pro無法充電,送到售后表示需要更換整塊主板,后來經第三方檢測,猜測是因為USB-C損壞導致充電時破壞SoC芯片,所以只能通過更換主板進行維修。
下圖是iPad Pro 12.9"(第五代)以及MacBook Air 13" 2020的USB-C接口特寫,觸點是表面鍍金的銅箔。
圖片來源iFixit
接下來是Galaxy S21 Ultra和MacBook Air M2 2022 (A2681) 的USB-C接口特寫,觸點都是厚實的金屬條,符合USB IF標準設計,因此舊款iPad很可能是因為蘋果采用非標準USB-C接口,加上用戶使用非原廠線導致損壞的。
好消息是,蘋果早已停用非標準USB-C接口設計,iPhone 15是安全的。
圖片來源iFixit
結語
不難看出,蘋果一直喜歡制定接口標準,可是一直水平不高,相信即將推出iPhone 15系列仍會玩出新花樣。
比如說iPhone 15接口限速USB 2.0,在快速充電時為了“保障安全”,必須使用原廠或是獲得授權的充電線、充電器,至于實現5Gbps、10Gpbs高速傳輸,也是要原廠或授權數據線的。