文章出處

 

轉自https://www.qianduan.net/qqliu-lan-qi-x5nei-he-wen-ti-hui-zong/

常常被人問及微信中使用的X5內核的問題,其實我也不是很清楚,只知道它是基于android 4.2的webkit,版本號是webkit 534。今天正好從X5團隊拿到了一份問題匯總,梳理下發出來,給各位開發者以參考——不排除明天會刪除這篇文章的可能。

1.Android WebView常見問題及解決方案匯總:

http://blog.csdn.net/t12x3456/article/details/13769731

2.請問各位碰到過X5瀏覽器內,局部滑動使用iscroll卡頓的問題么?

回答:是使用 iscroll.js 這個JS去滾動么?如果只是為了產生滾動,建議使用 overflow 屬性來,目前有一種滾動優化在線上版本效率不是太好,通過JS去改變CSS的屬性產生滾動

3.調用:-webkit-filter: blur(10px);filter: blur(10px);在Android下 背景圖沒有blur掉,只是被單純的放大而已

回答:-webkit-filter目前還不支持,可以先用圖片替換的方式 后續版本會支持這個屬性

4.shadowBlur是陰影效果吧,我們是想實現圖片毛玻璃

回答: http://blog.csdn.net/jia20003/article/details/9195915 這個有用么

5.LBS相關,定位頻繁失敗

第一步,首先確認定位失敗是個別站點原因還是所有站點定位都失敗。如果是所有站點定位都不成功,很有可能是內核問題,轉內核相關同學跟進調查定位邏輯是否有缺陷;如果是某個站點才會出現的問題,繼續第二步排查,從站點源碼著手。

第二步,找到站點請求定位的js代碼段,檢查獲取定位信息函數的options字段,很有可能是 options 中 timeout 字段設置的超時太短導致,建議前端開發將該字段時間設置長一些(建議10s以上)或者不設置該字段。如果js沒有設置 timeout 字段的情況下仍然定位不成功,則轉內核同學調查內核流程。

ps:H5獲取LBS信息的js接口

回答:

navigator.geolocation.getCurrentPosition(showPosition,showError,{  
    enableHighAccuracy:false,
    timeout:10*1000,
    maximumAge:0
});

navigator.geolocation.watchPosition(watchPosition,showError,options);  

showPosition:定位成功時回調; 
showError:定位出錯時回調; 
options:可選的地理定位請求特征 
enableHightAccuracy:可選,是否開啟高精度模式,參數默認值為 false 
timeout:可選,單位為ms,瀏覽器需要在該時間段內完成定位,否則定位失敗,默認值為 - - infinity,無窮大。如果該值設置較小,會有很高的定位失敗率。 
maximumAge:可選,單位ms,重新計算位置的時間間隔。默認為0,即每次時時計算位置信息。

6.打開視頻播放,后退視頻仍然在播放

回答:部分機型,瀏覽頁面時打開視頻播放,點擊返回,頁面上的視頻仍然在播放。解決辦法是捕獲后退事件,主動調用 onHideCustomView() 方法,并且在該方法里將 onShowCustomView 里關聯的view解除關聯

7.請問一下微信瀏覽器的cookie清理機制是怎么樣的?

回答:X5內核是不會清除的。

8.打開WWW頁面,縮放顯示的問題

回答: 使用webview打開www頁面,如果頁面被放大顯示,確定websettings有沒有設置,webSettings.setUseWideViewPort(true),默認為false,www頁面不會被縮放顯示的。手機QQ瀏覽器默認為true,顯示www頁面更美觀

9.關于滾動時候動畫的問題

回答:

頁面滑動過程中動畫不會被觸發 頁面滑動過程中動畫會被停止 這個是X5內核為了做滾動優化而做的限制

10.關于connection type定義的問題

回答:X5執行的標準比較老,NetworkInfo_API

enum ConnectionType {  
UNKNOWN = 0,  
ETHERNET = 1,  
WIFI = 2,  
CELL_2G = 3,  
CELL_3G = 4,  
CELL_4G = 5,  
NONE = 6,  
};

11.出現網絡正常,但是頁面打不開的情況

回答:關于設置里面的云加速試下是否可以打開。

12.js阻塞和css阻塞的不同

回答:css是阻塞渲染過程,js阻塞解析過程!對于用戶來說,沒什么區別,都是空白的 js的執行時,如果js中有讀寫css的屬性的代碼,并且下載隊列中有待加載的css,js執行會被阻塞掉。

13.cookie的4k限制

回答:瀏覽器端cookie的數量可能會超過4k,有http請求時,內核只取前4k的cookie數據!

14.Js Defer與把js放到html底部的區別

回答:js defer:先加載,ondownload 后執行。和js放到html底部類似。不同的就是html預掃描到會先加載

15.首屏顯示后,為什么又會重排版

回答:瀏覽器的排版寬度受上層ui設置的webview寬度影響。如果webview沒設置或者是設置成0,瀏覽器內核會用默認的排版寬度320px進行排版。此時若webview的寬度值被正常設置,計算出來的排版寬度不是320px(一般是360px),這樣瀏覽器就要用360px寬度,對頁面進行重排。

16.canvas的數量是不是有限制

回答:

  • 小于1G的內存, canvas的內存不能超過100M
  • 1G到2G的內存, canvas的內存不能超過300M
  • 大于2G的內存 canvas的內存不能超過500M
  • 為了防止內存占用過多,硬件加速的CANVAS最多支持5個

小于等于1G內存手機,由于內存沒辦法精確統計,當達到75M以上,CANVAS數量最多支持20個

上面說的canvas內存,僅僅是說canvas 長寬計算出來的內存,不包括canavs使用的圖片等資源內存

17.x5瀏覽器CSS3有些不支持,同樣的樣式,在chrome里能起到效果,在X5就沒用。并且js性能也差的多,微信還內置X5,用起來太不爽

回答:是否方便具體說下是什么樣的性能問題和css樣式缺陷影響到您?我們這邊可以跟進查看下原因。

X5內核也在不斷改進,您的反饋可以幫助我們進一步優化。

chrome在標準的支持和性能優化方面確實目前走在業界前面,不過android系統的碎片化,android系統webview更是碎片化嚴重。

android系統上的web開發可能也需要考慮到不同rom的兼容情況。X5內核致力于為開發者提供統一的web體驗,并通過不斷的優化,來向業界標準對齊。

目前我們也在做基于chromium內核的研究工作,后續在標準的支持和性能上會有進一步提高。

18.請問下x5中js調用android怎么實現?

回答:跟系統內核下一樣,都借助 addjavainterface 實現

19.請問一下,android手機微信上用的x5支持webgl嗎?

回答:android手機中微信上的X5都是支持webgl的,不過部分機型上還有兼容性問題,由于兼容性問題,webgl之前我們是采用軟繪的方式支持,目前切換到了硬繪,但整體來說還是會有兼容性和性能問題,后續這塊還會持續更新

20.如果在某個設備第一次打開應用的時候 沒有網絡,x5內核可以啟動嗎?單網絡恢復后還要再次認證,還是 不用在認證?

回答:第一次打開應用是不會拉起X5的 在第二次打開之后 不管有無網絡都可以拉起

21.如果我不安裝瀏覽器,安裝微信,x5能調用起來嗎?

回答:不能,只能安裝QQ瀏覽器才能調用

22.web audio api是否已經支持?

回答:暫時還不支持

23.什么時候支持html5的onunload和onbeforeunload事件

回答:現在是支持html5的 onunload 和 onbeforeunload 事件的

24.要用X5的內核,必須要用QQ瀏覽器么?

回答:目前 SDK 版本是這樣的,我們正在預研的版本,手機如果安裝了微信或手Q ,其它 app 可以不依賴 QQ瀏覽器 而共享 x5 內核。

25.關于svg問題。

回答:關于SVG的問題:

關于svg模糊的問題,有2種情況:

直接訪問一個.svg url的頁面或者object,embed加入的svg, 出現模糊的問題

此問題已解決, qq瀏覽器5.8上已經修復, tbs下個版本也會修復 svg用作background-image, 模糊這個問題是我們目前渲染機制導致不能兼容非標準寫法: 在用svg作為background-image的時候, 需要指定background-size, 不然會模糊

關于svg支持情況: 在5.3之前的qq瀏覽器不支持svg, 我們會在后臺把svg轉成一張jpeg圖片, 供瀏覽器顯示,5.4及以上版本支持svg,如果遇到被轉成圖片的問題,需要升級瀏覽器版本。

26.請問flexbox近期會支持嗎?

回答:flexbox我們正在做開發支持

27.x5內核 目前是獨立運行的 還是需要安裝QQ瀏覽器?

回答:sdk是需要QQ瀏覽器的,微信手Q里的是不需要的

28.現在X5內核怎么調試?在微信或者手q或者qq瀏覽器中調試頁面

回答:現在的微信手Q里面的X5還無法通過inspector調試 后期我們會把帶有inspector調試的版本掛在開發者后臺下載區 敬請期待

29.請問x5支持webgl的所有接口嗎?能在所有版本的android機(4.0+)和ios機(5.0+)上運行webgl嗎?

回答:webgl目前是支持的,不過部分機型上還有兼容性問題

30.X5上支持哪些擴展?支持多少個紋理單元?

回答:X5上只能支持:

WEBGL_lose_context  
EXT_texture_filter_anisotropic  
OES_texture_float  
OES_standard_derivatives  
OES_vertex_array_object  
WEBGL_debug_renderer_info  
WEBGL_debug_shaders  
WEBKIT_WEBGL_compressed_texture_s3tc  

而且這些是必須手機GPU有對應的擴展指令才行的。

關于紋理單元。我們這邊沒有限制

上面的擴展,也都是基本每一個對應opengl的一個擴展

支持多少紋理單元,也是從opengl查詢得到的。

主要應該是看手機GPU支持到啥程度,我們是做個對接。

31.x5的文件分片功能解決了嗎,blob = file.webkitSlice(start, stop),這樣分片出來的blob用不了啊。

回答:分片問題這邊已經定位處理,瀏覽器會在5.8版本修復

32.手機qq瀏覽器是否有調試工具呢?

回答:有的,Inspector。

33.請問現在微信調用的手機QQ瀏覽器支持websocket 嗎?

回答:支持websocket ,暫不支持wss,不支持webrtc

34.有計劃支持webRTC嗎?

回答:這個我們后續會評估的。

35.我是HTML5游戲開發者,制作中的H5游戲需要有音樂音效。但是我在android機器上使用QQ瀏覽器出現了如下問題:

循環播放BGM時,如果同時播放音效,BGM會被強行暫停 多個音效同時播放時,會出現明顯的無法忍受的延遲和播放失敗 這個問題在同一臺機器的微信上同樣存在,但是同一臺機器的chrome沒有這個問題。

我能想到的最合理的解釋是:X5內核同一時間只能播放一個音頻通道。

希望官方能解答我的疑惑和遇到的問題,謝謝。

PS:

  • 使用的H5音頻庫 : SoundJS
  • 使用的音頻格式 : mp3
  • 使用的Android機型:三星 Note3

回答:播放音效需要獲取聲音輸出焦點,目前只支持同時播放一個音效 您提的需求我們會討論評估后期是否能有方案現

36.播放音效時,為啥會把我后臺的BGM播放給暫停掉?

回答:播放聲音時當前音頻需要獲取 audiofocus ,系統在audiofocus丟失時會通知其它音頻播放軟件,這個暫停應該是播放軟件自身的行為,我們本身并沒有暫停后臺音頻,只是向系統申請了 audiofocus

37.300ms延遲是指什么?click 和 touch ?

回答:touch 點擊之后,到 click 事件被觸發,click 事件有延遲,touch 不存在,用 touchstart 事件替代 click 事件就OK

38.現在微信內置的瀏覽器能支持flexbox么,現在有沒有什么好辦法能夠替代呢?做好的網頁一放到微信上,大量的flex的頁面

回答:你好flexbox正在開發支持,flexbox在android4.1到4.3系統內核上,也有類似問題,頁面是需要兼容的

39.有沒有什么x5內核的論壇或者wiki之類的?可以參考下。

回答:http://bbs.browser.qq.com/ http://x5.tencent.com/ 這兩個論壇可以關注下

另外有我們的公眾賬號 有問題可以隨時交流

40.X5公眾號叫什么?

回答:騰訊X5瀏覽服務

41.手q上面的內核應該也是x5的吧?這樣直接在手q上面的效果和在微信里面應該是一樣的?

回答:是的手Q微信內的webview都是X5。

42.x5不支持font-face嗎?

回答:支持

43.x5 支持flex嗎?有兼容性文檔嗎?

回答:不支持.http://1.h5support.sinaapp.com/incoming/cow.html

這個頁面是參考caniuse的測試用例得到的測試結果,5.7是對應qq瀏覽器5.7版本,可以對比下和系統瀏覽器4.1~.4.4的支持度。有需要的同學可以先參考下,相關的文檔建設我們也在逐步完……

44.iscroll+lazyload在x5瀏覽器里面卡頓很嚴重,有人碰到過類似問題么,小米手機 列表內元素200個左右。

回答:iscroll本身對內核要求比較高,較新的blink版本支持才比較好。可以對比測試下android 4.x 的系統瀏覽器看看。建議還是在前端做些優化,避免較長的元素,并減少動畫效果。http://www.cnblogs.com/vbluebirdv/archive/2012/11/18/2776300.html 可以參考網上一些iscroll調優的文章

45.微信里面緩存問題,在安卓下和 ios下,刷新機制是不是不一樣?

回答:ios因為有刷新功能,點擊之后請求到的都是最新的文件,安卓下,不管怎樣請求都不會更新文件

46.<meta name="x5-orientation" content="portrait"/>現在微信里面沒有假如這個啊?為什么IOS QQ瀏覽器不識別這個?

回答:ios內核不是X5, ios 瀏覽器后續版本也會支持http://open.mb.qq.com/doc?id=1201 目前ios 瀏覽器僅支持 x5-page-mode

47.現在白鷺游戲引擎是不是內置在x5里面了?

回答:內置了白鷺引擎runtime

48.x5內核不支持 canvas 的 background 屬性嗎?

<!doctype html>  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta charset="utf-8">  
<title>canvas test</title>  
    <!--<meta HTTP-EQUIV="pragma" CONTENT="no-cache">-->
    <!--<meta HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate">-->
</head>

<body>  
<div>  
    <canvas id="testCanvas" width="500" height="300" style="background: #00FF00;"></canvas>

<!--<canvas id="testCanvas" width="1136" height="640" style="background:#000"></canvas> -->  
</div>  
</body>  
</html>  

背景顏色顯示不出來

回答:這個是做了優化,當canvas下蓋了背景,就沒有去繪制背景圖片,當初是因為一些手機的GPu在繪制這塊,如果存在這種情況繪制非常慢

49.qq瀏覽器有沒有準備支持asm.js的計劃?

回答:我們也正在籌備相關工作,會對市面上各種游戲引擎進行全面評測并設計合理的架構方案整合。預計下半年可以推出,敬請期待

50.X5不支持canvas.toDataUrl()的image/jpeg參數,還是轉成了默認的png格式請問有什么替換方法嗎?

回答:當前確實還不支持...我們在修復

51.問一下 ios版的微信里面是用的系統自帶的UIWebView還是用的qq瀏覽器的內核?

回答:ios版微信里面用的是系統自帶的


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()