经常被人问及微信中使用的X5内核的问题,其实我也不是很清楚,只知道它是基于android 4.2的webkit,版本号是webkit 534。今天正好从X5团队拿到了一份问题汇总,梳理下发出来,给各位开发者以参考——不排除明天会删除这篇文章的可能。css
http://blog.csdn.net/t12x3456/article/details/13769731html
回答:是使用 iscroll.js
这个JS去滚动么?若是只是为了产生滚动,建议使用 overflow
属性来,目前有一种滚动优化在线上版本效率不是太好,经过JS去改变CSS的属性产生滚动前端
-webkit-filter: blur(10px);filter: blur(10px);
在Android下 背景图没有blur掉,只是被单纯的放大而已回答:-webkit-filter
目前还不支持,能够先用图片替换的方式 后续版本会支持这个属性html5
shadowBlur
是阴影效果吧,咱们是想实现图片毛玻璃回答: http://blog.csdn.net/jia20003/article/details/9195915 这个有用么java
第一步,首先确认定位失败是个别站点缘由仍是全部站点定位都失败。若是是全部站点定位都不成功,颇有多是内核问题,转内核相关同窗跟进调查定位逻辑是否有缺陷;若是是某个站点才会出现的问题,继续第二步排查,从站点源码着手。android
第二步,找到站点请求定位的js代码段,检查获取定位信息函数的options字段,颇有多是 options
中 timeout
字段设置的超时过短致使,建议前端开发将该字段时间设置长一些(建议10s以上)或者不设置该字段。若是js没有设置 timeout
字段的状况下仍然定位不成功,则转内核同窗调查内核流程。ios
回答:css3
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,即每次时时计算位置信息。回答:部分机型,浏览页面时打开视频播放,点击返回,页面上的视频仍然在播放。解决办法是捕获后退事件,主动调用 onHideCustomView()
方法,而且在该方法里将 onShowCustomView
里关联的view解除关联nginx
回答:X5内核是不会清除的。web
回答:
使用webview打开www页面,若是页面被放大显示,肯定websettings有没有设置,webSettings.setUseWideViewPort(true
),默认为false
,www页面不会被缩放显示的。手机QQ浏览器默认为true,显示www页面更美观
回答:
这个是X5内核为了作滚动优化而作的限制
回答:X5执行的标准比较老,NetworkInfo_API
enum ConnectionType { UNKNOWN = 0, ETHERNET = 1, WIFI = 2, CELL_2G = 3, CELL_3G = 4, CELL_4G = 5, NONE = 6, };
回答:关于设置里面的云加速试下是否能够打开。
回答:css是阻塞渲染过程,js阻塞解析过程!对于用户来讲,没什么区别,都是空白的 js的执行时,若是js中有读写css的属性的代码,而且下载队列中有待加载的css,js执行会被阻塞掉。
回答:浏览器端cookie的数量可能会超过4k,有http请求时,内核只取前4k的cookie数据!
回答:js defer:先加载,ondownload
后执行。和js放到html底部相似。不一样的就是html预扫描到会先加载
回答:浏览器的排版宽度受上层ui设置的webview宽度影响。若是webview没设置或者是设置成0,浏览器内核会用默认的排版宽度320px进行排版。此时若webview的宽度值被正常设置,计算出来的排版宽度不是320px(通常是360px),这样浏览器就要用360px宽度,对页面进行重排。
回答:
小于等于1G内存手机,因为内存没办法精确统计,当达到75M以上,CANVAS数量最多支持20个
上面说的canvas内存,仅仅是说canvas 长宽计算出来的内存,不包括canavs使用的图片等资源内存
回答:是否方便具体说下是什么样的性能问题和css样式缺陷影响到您?咱们这边能够跟进查看下缘由。
X5内核也在不断改进,您的反馈能够帮助咱们进一步优化。
chrome在标准的支持和性能优化方面确实目前走在业界前面,不过android系统的碎片化,android系统webview更是碎片化严重。
android系统上的web开发可能也须要考虑到不一样rom的兼容状况。X5内核致力于为开发者提供统一的web体验,并经过不断的优化,来向业界标准对齐。
目前咱们也在作基于chromium内核的研究工做,后续在标准的支持和性能上会有进一步提升。
回答:跟系统内核下同样,都借助 addjavainterface
实现
回答:android手机中微信上的X5都是支持webgl的,不过部分机型上还有兼容性问题,因为兼容性问题,webgl以前咱们是采用软绘的方式支持,目前切换到了硬绘,但总体来讲仍是会有兼容性和性能问题,后续这块还会持续更新
回答:第一次打开应用是不会拉起X5的 在第二次打开以后 无论有无网络均可以拉起
回答:不能,只能安装QQ浏览器才能调用
回答:暂时还不支持
回答:如今是支持html5的 onunload
和 onbeforeunload
事件的
回答:目前 SDK 版本是这样的,咱们正在预研的版本,手机若是安装了微信或手Q ,其它 app 能够不依赖 QQ浏览器 而共享 x5 内核。
回答:关于SVG的问题:
关于svg模糊的问题,有2种状况:
background-image
, 模糊 background-image
的时候, 须要指定background-size
, 否则会模糊关于svg支持状况:
在5.3以前的qq浏览器不支持svg, 咱们会在后台把svg转成一张jpeg图片, 供浏览器显示,5.4及以上版本支持svg,若是遇到被转成图片的问题,须要升级浏览器版本。
回答:flexbox咱们正在作开发支持
回答:sdk是须要QQ浏览器的,微信手Q里的是不须要的
回答:如今的微信手Q里面的X5还没法经过inspector调试 后期咱们会把带有inspector调试的版本挂在开发者后台下载区 敬请期待
回答:webgl目前是支持的,不过部分机型上还有兼容性问题
回答: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支持到啥程度,咱们是作个对接。
blob = file.webkitSlice(start, stop)
,这样分片出来的blob用不了啊。回答:分片问题这边已经定位处理,浏览器会在5.8版本修复
回答:有的,Inspector。
回答:支持websocket ,暂不支持wss,不支持webrtc
回答:这个咱们后续会评估的。
这个问题在同一台机器的微信上一样存在,可是同一台机器的chrome没有这个问题。
我能想到的最合理的解释是:X5内核同一时间只能播放一个音频通道。
但愿官方能解答个人疑惑和遇到的问题,谢谢。
PS:
回答:播放音效须要获取声音输出焦点,目前只支持同时播放一个音效 您提的需求咱们会讨论评估后期是否能有方案现
回答:播放声音时当前音频须要获取 audiofocus
,系统在audiofocus
丢失时会通知其它音频播放软件,这个暂停应该是播放软件自身的行为,咱们自己并无暂停后台音频,只是向系统申请了 audiofocus
click
和 touch
?回答:touch
点击以后,到 click
事件被触发,click
事件有延迟,touch
不存在,用 touchstart
事件替代 click
事件就OK
回答:你好flexbox正在开发支持,flexbox在android4.1到4.3系统内核上,也有相似问题,页面是须要兼容的
回答:http://bbs.browser.qq.com/ http://x5.tencent.com/ 这两个论坛能够关注下
另外有咱们的公众帐号 有问题能够随时交流
回答:腾讯X5浏览服务
回答:是的手Q微信内的webview都是X5。
回答:支持
回答:不支持.http://1.h5support.sinaapp.com/incoming/cow.html
这个页面是参考caniuse的测试用例获得的测试结果,5.7是对应qq浏览器5.7版本,能够对比下和系统浏览器4.1~.4.4的支持度。有须要的同窗能够先参考下,相关的文档建设咱们也在逐步完……
回答:iscroll自己对内核要求比较高,较新的blink版本支持才比较好。能够对比测试下android 4.x 的系统浏览器看看。建议仍是在前端作些优化,避免较长的元素,并减小动画效果。http://www.cnblogs.com/vbluebirdv/archive/2012/11/18/2776300.html 能够参考网上一些iscroll调优的文章
回答:ios由于有刷新功能,点击以后请求到的都是最新的文件,安卓下,无论怎样请求都不会更新文件
<meta name="x5-orientation" content="portrait"/>
如今微信里面没有假如这个啊?为何IOS QQ浏览器不识别这个?回答:ios内核不是X5, ios 浏览器后续版本也会支持http://open.mb.qq.com/doc?id=1201
目前ios 浏览器仅支持 x5-page-mode
回答:内置了白鹭引擎runtime
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在绘制这块,若是存在这种状况绘制很是慢
回答:咱们也正在筹备相关工做,会对市面上各类游戏引擎进行全面评测并设计合理的架构方案整合。预计下半年能够推出,敬请期待
canvas.toDataUrl()
的image/jpeg
参数,仍是转成了默认的png格式请问有什么替换方法吗?回答:当前确实还不支持...咱们在修复
回答:ios版微信里面用的是系统自带的