1
在ios8系統(tǒng)中福压,用h5與APP通信不能傳帶有復(fù)雜鏈接符的字符串仿村。
在移動(dòng)端開(kāi)發(fā)中锐朴,經(jīng)常需要h5與APP進(jìn)行交互。這時(shí)就需要前端和APP開(kāi)發(fā)人員雙方規(guī)定一種傳輸協(xié)議蔼囊。在協(xié)議中可以添加與APP交互需要的參數(shù)焚志。但是在IOS8系統(tǒng)中衣迷,不支持參數(shù)中有復(fù)雜鏈接符,比如JSON格式的字符串酱酬、&等等壶谒。目前為止,下劃線是唯一支持的連接符膳沽。
2
safari中偽元素不支持CSS3動(dòng)畫(huà)佃迄。
在項(xiàng)目中肯定有很多前端開(kāi)發(fā)人員使用css的偽元素屬性進(jìn)行頁(yè)面構(gòu)建。雖然這種方式很方便贵少,但是在safari中并不支持偽元素的CSS3動(dòng)畫(huà)效果。
3
safari中當(dāng)一個(gè)元素的高度為零時(shí)堆缘,下邊的同級(jí)元素的上外邊距會(huì)覆蓋這個(gè)元素滔灶。
在IE、chromet吼肥、FF中录平,即使一個(gè)元素的高度為0,也會(huì)把它當(dāng)作塊級(jí)元素看待缀皱,在頁(yè)面中占據(jù)相應(yīng)的位置斗这。但是在safari中,高度為0的元素會(huì)被直接忽略啤斗。
4
ios系統(tǒng)中在移動(dòng)瀏覽器的頁(yè)面中給按鈕加JS事件表箭,其按鈕必須是原生HTML按鈕或者由標(biāo)簽自定義構(gòu)成。
這個(gè)問(wèn)題當(dāng)時(shí)困擾了小編很久钮莲,經(jīng)過(guò)一番盤(pán)查免钻,終于解決。原來(lái)在IOS系統(tǒng)中崔拥,瀏覽器只支持給原生HTML按鈕或標(biāo)簽加JS事件极舔。
5
在移動(dòng)瀏覽器中給根元素(例如:html)添加overflow:hidden,只有在某些安卓自帶瀏覽器(例如華為的自帶瀏覽器)中才有效链瓦。
overflow:hidden這個(gè)CSS樣式是大家常用到的拆魏。大家用這個(gè)樣式可以實(shí)現(xiàn)很多目的。其中一個(gè)常用的就是隱藏內(nèi)容溢出慈俯,把瀏覽器的滾動(dòng)條隱藏渤刃。這個(gè)在PC端瀏覽中毫無(wú)問(wèn)題。但是除了少數(shù)安卓自帶瀏覽器肥卡,在大多數(shù)移動(dòng)瀏覽器中溪掀,給根元素(例如:html)添加這個(gè)樣式就會(huì)失效。除非給根元素同時(shí)添加有實(shí)際數(shù)值的高度步鉴。為了適應(yīng)移動(dòng)端頻幕的多種尺寸揪胃,只能運(yùn)用JS動(dòng)態(tài)獲取視窗的高度璃哟,然后給根元素設(shè)置相同的高度,方可把移動(dòng)瀏覽器的滾動(dòng)條隱藏喊递。
6
在某些安卓系統(tǒng)手機(jī)自帶瀏覽器(例如:華為手機(jī))中随闪,當(dāng)父級(jí)元素是彈性盒子布局時(shí)(含有-webkit-box-flex屬性),其子元素的margin-bottom失效骚勘,不能撐開(kāi)父級(jí)元素铐伴。
這個(gè)問(wèn)題是小編在某個(gè)移動(dòng)項(xiàng)目開(kāi)發(fā)中碰到的。直接將外邊距(margin)改為內(nèi)邊距(padding)就可解決俏讹。
7
在safair中使用Date.parse()解析時(shí)間字符串当宴,其格式必須是YYYY/MM/DD HH:MM:SS。
Date.parse() 方法解析一個(gè)表示某個(gè)日期的字符串泽疆,并返回從1970-1-1 00:00:00 UTC 到該日期對(duì)象(該日期對(duì)象的UTC時(shí)間)的毫秒數(shù)户矢,如果該字符串無(wú)法識(shí)別,或者一些情況下殉疼,包含了不合法的日期數(shù)值(如:2015-02-31)梯浪,則返回值為NaN。
上述是JavaScript 參考文檔的說(shuō)明瓢娜。嚴(yán)格來(lái)說(shuō)挂洛,其解析的時(shí)間字符串必須是YYYY/MM/DD HH:MM:SS。但是眠砾,在IE虏劲、chrome、FF中荠藤,也可以解析YYYY-MM-DD HH:MM:SS或者YYYY.MM.DD HH:MM:SS這兩種非標(biāo)準(zhǔn)格式的時(shí)間字符串伙单。而safari只能解析標(biāo)準(zhǔn)格式。因此哈肖,開(kāi)發(fā)人員在使用這個(gè)方法時(shí)吻育,最好先把非標(biāo)準(zhǔn)格式轉(zhuǎn)換成標(biāo)準(zhǔn)格式,這樣就可以避免兼容問(wèn)題淤井。
8
在IOS系統(tǒng)中H5播放器不支持自動(dòng)播放布疼。
在iphone和ipad上用HTML5播放器時(shí),不能自動(dòng)播放币狠,apple的解釋說(shuō)是為用戶節(jié)省流量游两,我覺(jué)得這個(gè)考慮有點(diǎn)多余。
當(dāng)時(shí)為了解決這個(gè)問(wèn)題漩绵,做了些調(diào)研贱案,最好的方法就是在IOS系統(tǒng)的瀏覽器中給頁(yè)面根元素綁定一次touchstart事件播放流媒體文件,模擬自動(dòng)播放止吐。
9
標(biāo)準(zhǔn)瀏覽器是只認(rèn)識(shí)documentElement.scrollTop的宝踪,但chrome卻不認(rèn)識(shí)這個(gè)侨糟,在有文檔聲明時(shí),chrome也只認(rèn)識(shí)document.body.scrollTop瘩燥。
document.body.scrollTop與document.documentElement.scrollTop兩者有個(gè)特點(diǎn)秕重,就是同時(shí)只會(huì)有一個(gè)值生效。比如document.body.scrollTop能取到值的時(shí)候厉膀,document.documentElement.scrollTop就會(huì)始終為0溶耘;反之亦然。所以服鹅,如果要得到網(wǎng)頁(yè)的真正的scrollTop值凳兵,可以這樣:
任選上述其中一種方式都可以解決。
10
我們常說(shuō)的事件處理時(shí)的event屬性企软,在標(biāo)準(zhǔn)瀏覽器其是傳入的留荔,IE下由window.event獲取的。并且獲取目標(biāo)元素的方法也不同澜倦,標(biāo)準(zhǔn)瀏覽器是event.target,而IE下是event.srcElement
具體參考《javascript高級(jí)程序設(shè)計(jì)(第3版)》杰妓,在此不再贅述藻治。