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