常常被人問及微信中使用的X5內(nèi)核的問題,其實(shí)我也不是很清楚,只知道它是基于android 4.2的webkit,版本號是webkit 534。今天正好從X5團(tuán)隊(duì)拿到了一份問題匯總,梳理下發(fā)出來,給各位開發(fā)者以參考——不排除明天會刪除這篇文章的可能。 1.Android WebView常見問題及解決方案匯總: http://blog.csdn.net/t12x3456/article/details/13769731 2.請問各位碰到過X5瀏覽器內(nèi),局部滑動(dòng)使用iscroll卡頓的問題么? 回答:是使用 iscroll.js 這個(gè)JS去滾動(dòng)么?如果只是為了產(chǎn)生滾動(dòng),建議使用 overflow 屬性來,目前有一種滾動(dòng)優(yōu)化在線上版本效率不是太好,通過JS去改變CSS的屬性產(chǎn)生滾動(dòng) 3.調(diào)用: 回答: 4.shadowBlur是陰影效果吧,我們是想實(shí)現(xiàn)圖片毛玻璃 回答: http://blog.csdn.net/jia20003/article/details/9195915 這個(gè)有用么 5.LBS相關(guān),定位頻繁失敗 第一步,首先確認(rèn)定位失敗是個(gè)別站點(diǎn)原因還是所有站點(diǎn)定位都失敗。如果是所有站點(diǎn)定位都不成功,很有可能是內(nèi)核問題,轉(zhuǎn)內(nèi)核相關(guān)同學(xué)跟進(jìn)調(diào)查定位邏輯是否有缺陷;如果是某個(gè)站點(diǎn)才會出現(xiàn)的問題,繼續(xù)第二步排查,從站點(diǎn)源碼著手。 第二步,找到站點(diǎn)請求定位的js代碼段,檢查獲取定位信息函數(shù)的options字段,很有可能是 options 中 timeout 字段設(shè)置的超時(shí)太短導(dǎo)致,建議前端開發(fā)將該字段時(shí)間設(shè)置長一些(建議10s以上)或者不設(shè)置該字段。如果js沒有設(shè)置 timeout 字段的情況下仍然定位不成功,則轉(zhuǎn)內(nèi)核同學(xué)調(diào)查內(nèi)核流程。 ps:H5獲取LBS信息的js接口 回答:
showPosition:定位成功時(shí)回調(diào); 6.打開視頻播放,后退視頻仍然在播放 回答:部分機(jī)型,瀏覽頁面時(shí)打開視頻播放,點(diǎn)擊返回,頁面上的視頻仍然在播放。解決辦法是捕獲后退事件,主動(dòng)調(diào)用 onHideCustomView() 方法,并且在該方法里將 onShowCustomView 里關(guān)聯(lián)的view解除關(guān)聯(lián) 7.請問一下微信瀏覽器的cookie清理機(jī)制是怎么樣的? 回答:X5內(nèi)核是不會清除的。 8.打開WWW頁面,縮放顯示的問題 回答:
使用webview打開www頁面,如果頁面被放大顯示,確定websettings有沒有設(shè)置, 9.關(guān)于滾動(dòng)時(shí)候動(dòng)畫的問題 回答: 頁面滑動(dòng)過程中動(dòng)畫不會被觸發(fā) 頁面滑動(dòng)過程中動(dòng)畫會被停止 這個(gè)是X5內(nèi)核為了做滾動(dòng)優(yōu)化而做的限制 10.關(guān)于connection type定義的問題 回答:X5執(zhí)行的標(biāo)準(zhǔn)比較老,NetworkInfo_API
11.出現(xiàn)網(wǎng)絡(luò)正常,但是頁面打不開的情況 回答:關(guān)于設(shè)置里面的云加速試下是否可以打開。 12.js阻塞和css阻塞的不同 回答:css是阻塞渲染過程,js阻塞解析過程!對于用戶來說,沒什么區(qū)別,都是空白的 js的執(zhí)行時(shí),如果js中有讀寫css的屬性的代碼,并且下載隊(duì)列中有待加載的css,js執(zhí)行會被阻塞掉。 13.cookie的4k限制 回答:瀏覽器端cookie的數(shù)量可能會超過4k,有http請求時(shí),內(nèi)核只取前4k的cookie數(shù)據(jù)! 14.Js Defer與把js放到html底部的區(qū)別 回答:js defer:先加載,ondownload 后執(zhí)行。和js放到html底部類似。不同的就是html預(yù)掃描到會先加載 15.首屏顯示后,為什么又會重排版 回答:瀏覽器的排版寬度受上層ui設(shè)置的webview寬度影響。如果webview沒設(shè)置或者是設(shè)置成0,瀏覽器內(nèi)核會用默認(rèn)的排版寬度320px進(jìn)行排版。此時(shí)若webview的寬度值被正常設(shè)置,計(jì)算出來的排版寬度不是320px(一般是360px),這樣瀏覽器就要用360px寬度,對頁面進(jìn)行重排。 16.canvas的數(shù)量是不是有限制 回答:
小于等于1G內(nèi)存手機(jī),由于內(nèi)存沒辦法精確統(tǒng)計(jì),當(dāng)達(dá)到75M以上,CANVAS數(shù)量最多支持20個(gè) 上面說的canvas內(nèi)存,僅僅是說canvas 長寬計(jì)算出來的內(nèi)存,不包括canavs使用的圖片等資源內(nèi)存 17.x5瀏覽器CSS3有些不支持,同樣的樣式,在chrome里能起到效果,在X5就沒用。并且js性能也差的多,微信還內(nèi)置X5,用起來太不爽 回答:是否方便具體說下是什么樣的性能問題和css樣式缺陷影響到您?我們這邊可以跟進(jìn)查看下原因。 X5內(nèi)核也在不斷改進(jìn),您的反饋可以幫助我們進(jìn)一步優(yōu)化。 chrome在標(biāo)準(zhǔn)的支持和性能優(yōu)化方面確實(shí)目前走在業(yè)界前面,不過android系統(tǒng)的碎片化,android系統(tǒng)webview更是碎片化嚴(yán)重。 android系統(tǒng)上的web開發(fā)可能也需要考慮到不同rom的兼容情況。X5內(nèi)核致力于為開發(fā)者提供統(tǒng)一的web體驗(yàn),并通過不斷的優(yōu)化,來向業(yè)界標(biāo)準(zhǔn)對齊。 目前我們也在做基于chromium內(nèi)核的研究工作,后續(xù)在標(biāo)準(zhǔn)的支持和性能上會有進(jìn)一步提高。 18.請問下x5中js調(diào)用android怎么實(shí)現(xiàn)? 回答:跟系統(tǒng)內(nèi)核下一樣,都借助 addjavainterface 實(shí)現(xiàn) 19.請問一下,android手機(jī)微信上用的x5支持webgl嗎? 回答:android手機(jī)中微信上的X5都是支持webgl的,不過部分機(jī)型上還有兼容性問題,由于兼容性問題,webgl之前我們是采用軟繪的方式支持,目前切換到了硬繪,但整體來說還是會有兼容性和性能問題,后續(xù)這塊還會持續(xù)更新 20.如果在某個(gè)設(shè)備第一次打開應(yīng)用的時(shí)候 沒有網(wǎng)絡(luò),x5內(nèi)核可以啟動(dòng)嗎?單網(wǎng)絡(luò)恢復(fù)后還要再次認(rèn)證,還是 不用在認(rèn)證? 回答:第一次打開應(yīng)用是不會拉起X5的 在第二次打開之后 不管有無網(wǎng)絡(luò)都可以拉起 21.如果我不安裝瀏覽器,安裝微信,x5能調(diào)用起來嗎? 回答:不能,只能安裝QQ瀏覽器才能調(diào)用 22.web audio api是否已經(jīng)支持? 回答:暫時(shí)還不支持 23.什么時(shí)候支持html5的onunload和onbeforeunload事件 回答:現(xiàn)在是支持html5的 onunload 和 onbeforeunload 事件的 24.要用X5的內(nèi)核,必須要用QQ瀏覽器么? 回答:目前 SDK 版本是這樣的,我們正在預(yù)研的版本,手機(jī)如果安裝了微信或手Q ,其它 app 可以不依賴 QQ瀏覽器 而共享 x5 內(nèi)核。 25.關(guān)于svg問題。 回答:關(guān)于SVG的問題: 關(guān)于svg模糊的問題,有2種情況: 直接訪問一個(gè).svg url的頁面或者object,embed加入的svg, 出現(xiàn)模糊的問題 此問題已解決, qq瀏覽器5.8上已經(jīng)修復(fù), tbs下個(gè)版本也會修復(fù) svg用作background-image, 模糊這個(gè)問題是我們目前渲染機(jī)制導(dǎo)致不能兼容非標(biāo)準(zhǔn)寫法: 在用svg作為background-image的時(shí)候, 需要指定background-size, 不然會模糊 關(guān)于svg支持情況: 在5.3之前的qq瀏覽器不支持svg, 我們會在后臺把svg轉(zhuǎn)成一張jpeg圖片, 供瀏覽器顯示,5.4及以上版本支持svg,如果遇到被轉(zhuǎn)成圖片的問題,需要升級瀏覽器版本。 26.請問flexbox近期會支持嗎? 回答:flexbox我們正在做開發(fā)支持 27.x5內(nèi)核 目前是獨(dú)立運(yùn)行的 還是需要安裝QQ瀏覽器? 回答:sdk是需要QQ瀏覽器的,微信手Q里的是不需要的 28.現(xiàn)在X5內(nèi)核怎么調(diào)試?在微信或者手q或者qq瀏覽器中調(diào)試頁面 回答:現(xiàn)在的微信手Q里面的X5還無法通過inspector調(diào)試 后期我們會把帶有inspector調(diào)試的版本掛在開發(fā)者后臺下載區(qū) 敬請期待 29.請問x5支持webgl的所有接口嗎?能在所有版本的android機(jī)(4.0+)和ios機(jī)(5.0+)上運(yùn)行webgl嗎? 回答:webgl目前是支持的,不過部分機(jī)型上還有兼容性問題 30.X5上支持哪些擴(kuò)展?支持多少個(gè)紋理單元? 回答:X5上只能支持:
而且這些是必須手機(jī)GPU有對應(yīng)的擴(kuò)展指令才行的。 關(guān)于紋理單元。我們這邊沒有限制 上面的擴(kuò)展,也都是基本每一個(gè)對應(yīng)opengl的一個(gè)擴(kuò)展 支持多少紋理單元,也是從opengl查詢得到的。 主要應(yīng)該是看手機(jī)GPU支持到啥程度,我們是做個(gè)對接。 31.x5的文件分片功能解決了嗎, 回答:分片問題這邊已經(jīng)定位處理,瀏覽器會在5.8版本修復(fù) 32.手機(jī)qq瀏覽器是否有調(diào)試工具呢? 回答:有的,Inspector。 33.請問現(xiàn)在微信調(diào)用的手機(jī)QQ瀏覽器支持websocket 嗎? 回答:支持websocket ,暫不支持wss,不支持webrtc 34.有計(jì)劃支持webRTC嗎? 回答:這個(gè)我們后續(xù)會評估的。 35.我是HTML5游戲開發(fā)者,制作中的H5游戲需要有音樂音效。但是我在android機(jī)器上使用QQ瀏覽器出現(xiàn)了如下問題: 循環(huán)播放BGM時(shí),如果同時(shí)播放音效,BGM會被強(qiáng)行暫停 多個(gè)音效同時(shí)播放時(shí),會出現(xiàn)明顯的無法忍受的延遲和播放失敗 這個(gè)問題在同一臺機(jī)器的微信上同樣存在,但是同一臺機(jī)器的chrome沒有這個(gè)問題。 我能想到的最合理的解釋是:X5內(nèi)核同一時(shí)間只能播放一個(gè)音頻通道。 希望官方能解答我的疑惑和遇到的問題,謝謝。 PS:
回答:播放音效需要獲取聲音輸出焦點(diǎn),目前只支持同時(shí)播放一個(gè)音效 您提的需求我們會討論評估后期是否能有方案現(xiàn) 36.播放音效時(shí),為啥會把我后臺的BGM播放給暫停掉? 回答:播放聲音時(shí)當(dāng)前音頻需要獲取 audiofocus ,系統(tǒng)在audiofocus丟失時(shí)會通知其它音頻播放軟件,這個(gè)暫停應(yīng)該是播放軟件自身的行為,我們本身并沒有暫停后臺音頻,只是向系統(tǒng)申請了 audiofocus 37.300ms延遲是指什么?click 和 touch ? 回答:touch 點(diǎn)擊之后,到 click 事件被觸發(fā),click 事件有延遲,touch 不存在,用 touchstart 事件替代 click 事件就OK 38.現(xiàn)在微信內(nèi)置的瀏覽器能支持flexbox么,現(xiàn)在有沒有什么好辦法能夠替代呢?做好的網(wǎng)頁一放到微信上,大量的flex的頁面 回答:你好flexbox正在開發(fā)支持,flexbox在android4.1到4.3系統(tǒng)內(nèi)核上,也有類似問題,頁面是需要兼容的 39.有沒有什么x5內(nèi)核的論壇或者wiki之類的?可以參考下。 回答:http://bbs.browser.qq.com/ http://x5.tencent.com/ 這兩個(gè)論壇可以關(guān)注下 另外有我們的公眾賬號 有問題可以隨時(shí)交流 40.X5公眾號叫什么? 回答:騰訊X5瀏覽服務(wù) 41.手q上面的內(nèi)核應(yīng)該也是x5的吧?這樣直接在手q上面的效果和在微信里面應(yīng)該是一樣的? 回答:是的手Q微信內(nèi)的webview都是X5。 42.x5不支持font-face嗎? 回答:支持 43.x5 支持flex嗎?有兼容性文檔嗎? 回答:不支持.http://1.h5support.sinaapp.com/incoming/cow.html 這個(gè)頁面是參考caniuse的測試用例得到的測試結(jié)果,5.7是對應(yīng)qq瀏覽器5.7版本,可以對比下和系統(tǒng)瀏覽器4.1~.4.4的支持度。有需要的同學(xué)可以先參考下,相關(guān)的文檔建設(shè)我們也在逐步完…… 44.iscroll+lazyload在x5瀏覽器里面卡頓很嚴(yán)重,有人碰到過類似問題么,小米手機(jī) 列表內(nèi)元素200個(gè)左右。 回答:iscroll本身對內(nèi)核要求比較高,較新的blink版本支持才比較好??梢詫Ρ葴y試下android 4.x 的系統(tǒng)瀏覽器看看。建議還是在前端做些優(yōu)化,避免較長的元素,并減少動(dòng)畫效果。http://www.cnblogs.com/vbluebirdv/archive/2012/11/18/2776300.html 可以參考網(wǎng)上一些iscroll調(diào)優(yōu)的文章 45.微信里面緩存問題,在安卓下和 ios下,刷新機(jī)制是不是不一樣? 回答:ios因?yàn)橛兴⑿鹿δ?,點(diǎn)擊之后請求到的都是最新的文件,安卓下,不管怎樣請求都不會更新文件 46. 回答:ios內(nèi)核不是X5, ios 瀏覽器后續(xù)版本也會支持 http://open.mb.qq.com/doc?id=1201 目前ios 瀏覽器僅支持 x5-page-mode 47.現(xiàn)在白鷺游戲引擎是不是內(nèi)置在x5里面了? 回答:內(nèi)置了白鷺引擎runtime 48.x5內(nèi)核不支持 canvas 的 background 屬性嗎?
背景顏色顯示不出來 回答:這個(gè)是做了優(yōu)化,當(dāng)canvas下蓋了背景,就沒有去繪制背景圖片,當(dāng)初是因?yàn)橐恍┦謾C(jī)的GPu在繪制這塊,如果存在這種情況繪制非常慢 49.qq瀏覽器有沒有準(zhǔn)備支持asm.js的計(jì)劃? 回答:我們也正在籌備相關(guān)工作,會對市面上各種游戲引擎進(jìn)行全面評測并設(shè)計(jì)合理的架構(gòu)方案整合。預(yù)計(jì)下半年可以推出,敬請期待 50.X5不支持 回答:當(dāng)前確實(shí)還不支持...我們在修復(fù) 51.問一下 ios版的微信里面是用的系統(tǒng)自帶的UIWebView還是用的qq瀏覽器的內(nèi)核? 回答:ios版微信里面用的是系統(tǒng)自帶的 |
|