怎样让手机白屏是什么原因不白屏

苹果App Store白屏的五种解决办法
作者:佚名
字体:[ ] 来源:互联网 时间:05-12 09:35:03
App Store白屏了怎么办?于未越狱的苹果用户,可能在使用中遇到最多的问题就是,打开App Store的时候会发现显示不了,屏幕一片白色,下面分享五种解决办法,总有一款适合你
苹果用户在使用过程中,往往都会遇到一些问题,有的问题是经常性发生的,不过并不是太大的问题,只要懂得使用一些日常的方法,基本上都可以排除问题的干扰。对于未越狱的苹果用户,可能在使用中遇到最多的问题就是,打开App Store的时候会发现显示不了,屏幕一片白色,也就是白屏了。又或者连上了蜂窝数据网络,打开App Store的时候,发现连接不上去,无法进行App的下载安装。不管问题是什么,总有这么几个方法可以尝试,一般问题就可以迎刃而解了。
1、开启飞行模式
在iPhone主屏上由下往上滑动,拉开快捷菜单栏,点击左上角的飞行模式,进行开启,让飞行模式飞大概五秒钟的时间,然后再将飞行模式关闭,这时手机将自动搜索蜂窝数据移动网络,等重新连接之后,再次打开App Store看是否已经正常了。
2、重启App Store
双击iPhone的HOME键,在运行后台中,将App Store向上滑动,退出程序,然后重新打开App Store,看一下问题是否还依然存在。
3、设置App Store
如果以上方法都依然没能解决问题,那么尝试打开iPhone主屏上的设置图标,然后进入到下一步操作
在打开的iPhone设置页面中,找到iTunes Store与App Store栏目,点击打开它
进入到iTunes Store与App Store页面,查看一下使用蜂窝移动数据选项是否之前被关闭了,点击打开右侧的开关按钮,然后重新打开一下App Store,看是否已经恢复正常
4、设置蜂窝移动数据
在iPhone主屏上依次打开设置,进入设置页面,打开蜂窝移动网络,进入到蜂窝移动网络之后,在蜂窝网络应用栏目下,查看一下App Store是否被关闭了,若是的话,将右侧的开关进行打开,然后重新打开App Store,检查一下是否已经恢复正常
5、重启iPhone
我们可以直接按住iPhone的电源键大概7秒钟的时间,直到屏幕显示滑动来关机,然后向右滑动关闭iPhone,静置5秒钟左右,然后再按电源键重新启动,打开App Store看是否恢复正常
当然,重启iPhone我们还可以点击小圆点(Assistive Touch),在弹开的快捷菜单中,长按住上面的锁屏选项,一直到屏幕显示滑动来关机,一样可以重启iPhone,这个方法的使用,还可以减少iPhone电源键的触按次数,对电源键的寿命有所帮助
重新打开App Store,一般到了这一步,问题基本上就可以解决了,如果还是不行,那么可能就是苹果App Store本身的问题,可以换个其他时间段打开试试
大家感兴趣的内容
12345678910
最近更新的内容如何通过技术途径避免智能手机“白屏死机”
> 如何通过技术途径避免智能手机“白屏死机”
如何通过技术途径避免智能手机“白屏死机”
  3G手机领域的一大新兴发展趋势是应用软件(即所谓的“App”)的采用与不断发展,这些应用软件专门针对手机特定的功能而编写。定制应用软件发展迅猛,目前已出现许多在线“App商店”以供用户选择和购买。然而应用软件常常是在某一个应用平台上来开发和测试,因此可能无法以最佳状态运行在其它硬件/芯片组平台上,或与其他服务提供商协同工作,这时可能会带来通常被称为“”的现象。本文将探讨这一问题,给出一些恢复手机正常工作可行的解决办法。  智能手机的现状与开发挑战  今天的智能手机确实已从单纯的通话设备向多媒体设备演进,它可兼具播放音频/视频、游戏、发送短信、打电话以及全面的网络访问等功能,允许用户进行银行交易,甚至在eBay上进行网上买卖。这场革命正在深入进行,其大众普及率不断提升。这种发展趋势是全球范围的,越来越多的人开始使用完全为用户而定制的移动设备应用软件,这些定制应用软件可以因地区、文化、年龄甚至性别而异。应用软件的扩展使得移动设备成为人们日常生活不可或缺的一部分。随时随地可以看到人们在移动设备上查看电子邮件、股市行情,或者在线网购、即时获取最新个人和商业相关信息等。这些应用软件让人们更充分地利用和分配自己的时间。  移动设备市场主要由三个垂直集成部分组成,即服务提供商、手机制造商和关键芯片组供应商。  在这三部分中,最高一级的是服务提供商。服务提供商允许移动设备连接到本地基站,然后进入网络。服务提供商直接与移动设备用户签约,提供多种不同的计划和服务合约。其内部拥有各种基本技术,比如GSM和CDMA.这些技术之间存在巨大的差异,多年来通过软件的开发和演变,才在网络级实现了互操作性。目前全球有数十家服务提供商。  中间一级是手机制造商。手机制造商为服务提供商设计和制造手持设备。一部GSM手机的工作频率和调制方案就与CDMA手机的截然不同,这意味着二者的天线、基本芯片组以及支持芯片组的软件都不同。手机制造商常常同时推出好几个等级的设备,例如高端智能手机整合了丰富的多媒体功能,所有连接均为USB端口,且带有语音命令功能,有些甚至使用多个微处理器和利用高速USB的连接性来实现简单的医疗诊断功能;中端智能手机具备基本的互联网连接能力,利用一个SoC微控制器来实现短信和基本通话功能;低端手机常常只能提供通话功能,采用的是超低成本的基本微处理器。此外,软件是以客户为中心的,不同品牌的服务提供商需要不同的定制软件。  全球有很多家手机厂商在制造高、中、低端不同类型的手机,有历史悠久的老牌企业,也有崭露头角的新创公司。很多制造商都在努力针对特定地区提供定制产品,从而进一步推动定制软件的发展。  关键芯片组是每一部手机的核心,这些芯片组一般根据手机的级别来选择。高端智能手机可能带有应用处理器、基带处理器以及器件(PM),其中应用处理器和基带处理器有可能来自相同的供应商。这些复杂的芯片与内存、WiFi模块、USB切换机制及触摸屏控制器协同工作,由不同的软件层控制。目前全球芯片组供应商有好几十家,他们根据服务提供商的要求为手机制造商定制相关芯片。  由于产业内存在多家服务提供商、手机制造商和芯片供应商,那么如何让应用软件在不同平台上得到兼容就显得十分重要。例如某消费者想购买一部带计步器应用软件的手机,尽管他会面临多款手机、多家服务提供商的选择,但均要能满足其对计步器应用软件的支持才是重点。  由于大多数应用软件都是在提供了硬件平台之后才被开发,因此应用软件的要求不一定被包含在芯片组/手机开发验证中。虽然制造商应该在应用软件发表之前完成验证过程,但市场压力巨大,加上缺乏公认的应用软件验证标准,这种状况很可能会导致产品未经验证而仓促面市。这意味着消费者第一次在某组硬件(手机和芯片组)/软件和网络环境下使用某个应用软件,很可能也就是该应用软件在这种环境下的首次“试航”。于是消费者就成了一个试验品,而试验有时是会失败的。  当一个应用软件第一次在某个平台上运行时,它有可能使整个操作完全被冻结。消费者用“蓝屏死机”来形容个人计算机(PC)进入失控或操作冻结状态,而类似的现象现在也在手机行业里广为发生,被称为“白屏”,即运行应用软件时,屏幕变成一片白。移动设备的“白屏”现象越来越普遍,据报导其真实原因可追溯到服务提供商。困扰PC行业多年的问题现在开始在手机领域泛滥。  “”的解决方案  PC用户已经知道,从蓝屏死机状态恢复的方法是彻底重启系统。很多时候,由于PC被锁定,必须退出这种冻结模式,然后再重新启动电源。在此情况下,如果导致蓝屏死机的可疑模式或功能被删除,操作完全恢复是能够实现的。  但现今一些移动设备使用不可维修拆除的电池,虽然这样做是为了获得必需的小外形尺寸,同时也是防止用户安装劣质的非原装电池,避免增加不可靠运行风险的需要,但由于这些移动设备的电池是内置的,不能随意取出,使得应用软件导致设备出现故障时用户无法复位重启。此时用户的选择只能是让电池耗尽至没电状态,而这可能需要数天或数周的时间,或者是把被锁定的设备作为坏机器退回给服务提供商,要求更换。  为避免此问题的发生,设计者可以选择在移动设备中安装一个单独的大功率RESET开关,正常情况下该开关关断,在被用户激活之后,这个开关可直接将电池与所有电路切断。尽管这是一种有效的解决方案,但一般不予选用,因为额外的开关会产生电阻压降,而且引入大电流配线会导致成本增加,此外也存在安全问题,必须得通过在移动设备内的某些额外位置上采用大电流方案才能解决。  另外则是采用基带处理器的软件复位。重启基带处理器是一个很有效的方法,但也存在瓶颈。若基带系统处理器因恶意应用程序被迫停止工作,则无法识别移动设备内的其他器件,比如应用处理器,即使基带处理器恢复正常工作,其也可能仍然保持基带无法识别的状态。在这种情况下,系统工作可能恢复,但却处于不可预测的状态,接下来就会发生辅助系统崩溃。利用自定义指定软件复位键也存在局限,即用户不可能总是随身携带用户手册以查看软件复位流程。  或许,可能是启动系统复位不错的选择。PM已变得越来越复杂,其自身即包括了数字控制算法和上电顺序,这些控制算法根据应用和工作模式有效控制手机内众多负载的供电。PMIC的主要作用是实现更多的功能,同时延长电池寿命,因此PMIC已被广泛集成在移动设备系统中,并通过总线和中断进行反馈。由于PMIC的复杂性,并依赖于与基带应用处理器的交互工作,故处于崩溃状态的基带处理器可能会锁定PMIC,这时用户就不再能够予以控制。  医疗和航空市场等高可靠领域的自治系统控制技术目前开始进入移动设备领域。这类架构可采用一种被称为复位芯片的半导体器件来实现PMIC和电源设备的控制或复位,而且这种器件独立于其所控制的设备。该芯片通常没有反馈机制,因此即使微控制器芯片处于崩溃状态,也不会对其产生影响。它可以由用户以简单的方式激活,相当于取出移动设备的电池。  在这种情况下,基带和应用处理器、PMIC及其他控制芯片等系统控制芯片断电,然后
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一怎么样才能不让手机在白屏?_百度知道积累(32)
mobileTech
A useful tools or tips list for mobile web application developing
这个项目收集移动端开发所需要的一些资源与小技巧
工具类网站
HTML5 与 CSS3 技术应用评估
各种奇妙的hack
几乎所有设备的屏幕尺寸与像素密度表
移动设备参数表
ios端移动设备参数速查
浏览器兼容表
移动设备查询器
移动设备适配库
移动设备适配库2
viewport与设备尺寸在线检测器
html5 移动端兼容性速查
在线转换字体
css3 选择器测试
兼容性速查表
浏览器的一些独特参数
各种各样的媒体查询收集
css3 动画在线制作器
css3 渐变在线制作器
移动端手势表
webkit独有的样式分析
HTML5 Cross Browser Polyfills
HTML5 POLYFILLS
iphone6的那些事
iPhone 6 屏幕揭秘
响应式测试工具
Firefox 浏览器内置了 自定义设计视图 的功能,可以通过 Firefox-&Web 开发者-&自定义设计视图(或者摁下 Shift + Ctrl + m )。相比网络工具,运行更加流畅,无需联网。
判断 iPad 和 iPhone 的版本和状态的 CSS 媒体查询代码
Viewport Resizer
媒体查询常用样式表:
rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css"&
// 竖放加载
rel="stylesheet" media="all and (orientation:landscape)"href="landscape.css"&
// 横放加载
//竖屏时使用的样式
media="all and (orientation:portrait)" type="text/css"&
#landscape { display: none; }
//横屏时使用的样式
media="all and (orientation:landscape)" type="text/css"&
#portrait { display: none; }
Web app 开发的最佳实践与中文总结
It’s not a web app. It’s an app you install from the web.
当前 WEB APP 开发的最佳实践
来自maxzhang的一些移动端经验总结干货
移动Web单页应用开发实践——页面结构化
移动Web产品前端开发口诀——“快”
移动Web开发,4行代码检测浏览器是否支持position:fixed
使用border-image实现类似iOS7的1px底边
移动端web页面使用position:fixed问题总结
移动Web开发实践——解决position:fixed自适应BUG
移动手机浏览器m3u8格式视频流播放支持程度测试
本资料很多引用了指尖上的js系列
指尖下的js ——多触式web前端开发之一:对于Touch的处理
指尖下的js ——多触式web前端开发之二:处理简单手势
指尖下的js —— 多触式web前端开发之三:处理复杂手势
meta标签大全
meta标签,这些meta标签在开发webapp时起到非常重要的作用
content="width=device- initial-scale=1.0; maximum-scale=1.0; user-scalable=0" name="viewport" /&
content="yes" name="apple-mobile-web-app-capable" /&
content="black" name="apple-mobile-web-app-status-bar-style" /&
content="telephone=no" name="format-detection" /&
第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览; 尤其要注意的是content里多个属性的设置一定要用分号+空格来隔开,如果不规范将不会起作用。
注意根据 public_00 提供的资料补充,content 使用分号作为分隔,在老的浏览器是支持的,但不是规范写法。
规范的写法应该是使用逗号分隔,参考 Safari HTML Reference - Supported Meta Tags 和 Android - Supporting Different Screens in Web Apps
width - viewport的宽度
height - viewport的高度
initial-scale - 初始的缩放比例
minimum-scale - 允许用户缩放到的最小比例
maximum-scale - 允许用户缩放到的最大比例
user-scalable - 用户是否可以手动缩放
第二个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览; 第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式; 第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码
在设置了initial-scale=1 之后,我们终于可以以1:1 的比例进行页面设计了。 关于viewport,还有一个很重要的概念是:iphone 的safari 浏览器完全没有滚动条,而且不是简单的“隐藏滚动条”, 是根本没有这个功能。iphone 的safari 浏览器实际上从一开始就完整显示了这个网页,然后用viewport 查看其中的一部分。 当你用手指拖动时,其实拖的不是页面,而是viewport。浏览器行为的改变不止是滚动条,交互事件也跟普通桌面不一样。 (请参考:指尖的下JS 系列文章)
更详细的 viewport 相关的知识也可以参考
此像素非彼像素
移动开发事件
手机浏览器常用手势动作监听封装
touchstart //当手指接触屏幕时触发
touchmove //当已经接触屏幕的手指开始移动后触发
touchend //当手指离开屏幕时触发
touchcancel
gesturestart //当两个手指接触屏幕时触发
gesturechange //当两个手指接触屏幕后开始移动时触发
gestureend
屏幕旋转事件
onorientationchange
检测触摸屏幕的手指何时改变方向
orientationchange
touch事件支持的相关属性
targetTouches
changedTouches
clientX    // X coordinate of touch relative to the viewport (excludes scroll offset)
clientY    // Y coordinate of touch relative to the viewport (excludes scroll offset)
screenX    // Relative to the screen
screenY    // Relative to the screen
pageX     // Relative to the full page (includes scrolling)
pageY     // Relative to the full page (includes scrolling)
target     // Node the touch event originated from
identifier   // An identifying number, unique to each touch event
屏幕旋转事件:onorientationchange
判断屏幕是function orientationChange() {
switch(window.orientation) {
  case 0:
alert(“肖像模式 0,screen-width: ” + screen.width + “; screen-height:” + screen.height);
  case -90:
alert(“左旋 -90,screen-width: ” + screen.width + “; screen-height:” + screen.height);
  case 90:
alert(“右旋 90,screen-width: ” + screen.width + “; screen-height:” + screen.height);
  case 180:
  alert(“风景模式 180,screen-width: ” + screen.width + “; screen-height:” + screen.height);
};};件监听
addEventListener(‘load‘, function(){
orientationChange();
window.onorientationchange = orientationC
双手指滑动事件:
// 双手指滑动事件
addEventListener(‘load‘,  function(){ window.onmousewheel = twoFingerS},
// 兼容各浏览器,表示在冒泡阶段调用事件处理程序 (true 捕获阶段)
function twoFingerScroll(ev) {
var delta =ev.wheelDelta/120;
//对 delta 值进行判断(比如正负) ,而后执行相应操作
JS 单击延迟
click 事件因为要等待单击确认,会有 300ms 的延迟,体验并不是很好。
开发者大多数会使用封装的 tap 事件来代替click 事件,所谓的 tap 事件由 touchstart 事件 + touchmove 判断 + touchend 事件封装组成。
Creating Fast Buttons for Mobile Web Applications
Eliminate 300ms delay on click events in mobile Safari
WebKit CSS:
携程 UED 整理的 Webkit CSS 文档 ,全面、方便查询,下面为常用属性。
①“盒模型”的具体描述性质的包围盒块内容,包括边界,填充等等。
-webkit-border-bottom-left-radius:
-webkit-border-top-left-radius: horizontal_radius vertical_
-webkit-border-radius:
//容器圆角
-webkit-box-sizing: sizing_ 边框常量值:border-box/content-box
-webkit-box-shadow:
//容器阴影(参数分别为:水平X 方向偏移量;垂直Y 方向偏移量;高斯模糊半径值;阴影颜色值)
-webkit-margin-bottom-collapse: collapse_ 常量值:collapse/discard/separate
-webkit-margin-start:
-webkit-padding-start:
-webkit-border-image: url(borderimg.gif) 25 25 25 25 round/stretch round/
-webkit-appearance: push-
//内置的CSS 表现,暂时只支持push-button
②“视觉格式化模型”描述性质,确定了位置和大小的块元素。
direction: rtl
unicode-bidi: bidi- 常量:bidi-override/embed/normal
③“视觉效果”描述属性,调整的视觉效果块内容,包括溢出行为,调整行为,能见度,动画,变换,和过渡。
clip: rect(10px, 5px, 10px, 5px)
resize: 常量:auto/both/horizontal/none/vertical
visibility: 常量: collapse/hidden/visible
-webkit-transition: opacity 1 动画效果 ease/linear/ease-in/ease-out/ease-in-out
-webkit-backface-visibility: 常量:visible(默认值)/hidden
-webkit-box-reflect: right 1 镜向反转
-webkit-box-reflect: below 4px -webkit-gradient(linear, left top, left bottom,
from(transparent), color-stop(0.5, transparent), to(white));
-webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));;
//CSS 遮罩/蒙板效果
-webkit-mask-attachment: 常量:fixed/scroll
-webkit-perspective: 常量:none(默认)
-webkit-perspective-origin:
-webkit-transform: rotate(5deg);
-webkit-transform-style: preserve-3d; 常量:flat/preserve-3d; (2D 与3D)
④“生成的内容,自动编号,并列出”描述属性,允许您更改内容的一个组成部分,创建自动编号的章节和标题,和操纵的风格清单的内容。
content: “Item” counter(section) ” “;
This resets the counter.
First section
two section
three section
counter-increment: section 1;
counter-reset:
⑤“分页媒体”描述性能与外观的属性,控制印刷版本的网页,如分页符的行为。
page-break-after: 常量:always/auto/avoid/left/right
page-break-before: 常量:always/auto/avoid/left/right
page-break-inside: 常量:auto/avoid
⑥“颜色和背景”描述属性控制背景下的块级元素和颜色的文本内容的组成部分。
-webkit-background-clip: 常量:border/content/padding/text
-webkit-background-origin: 常量:border/content/padding/text
-webkit-background-size: 55 常量:length/length_x/length_y
⑦ “字型”的具体描述性质的文字字体的选择范围内的一个因素。报告还描述属性用于下载字体定义。
unicode-range: U+00-FF, U+980-9FF;
⑧“文本”描述属性的特定文字样式,间距和自动滚屏。
text-shadow: #00FFFC 10px 10px 5
text-transform: 常量:capitalize/lowercase/none/uppercase
word-wrap: break- 常量:break-word/normal
-webkit-marquee: right large infinite normal 10s; 常量:direction(方向) increment(迭代次数) repetition(重复) style(样式) speed(速度);
-webkit-marquee-direction: ahead/auto/backwards/down/forwards/left/reverse/right/up
-webkit-marquee-incrementt: 1-n/infinite(无穷次)
-webkit-marquee-speed: fast/normal/slow
-webkit-marquee-style: alternate/none/scroll/slide
-webkit-text-fill-color: #ff6600; 常量:capitalize, lowercase, none, uppercase
-webkit-text-security: 常量:circle/disc/none/square
-webkit-text-size-adjust: 常量:auto/
-webkit-text-stroke: 15px #
-webkit-line-break: after-white- 常量:normal/after-white-space
-webkit-appearance: caps-lock-
-webkit-nbsp-mode: 常量: normal/space
-webkit-rtl-ordering: 常量:visual/logical
-webkit-user-drag: 常量:element/auto/none
-webkit-user-modify: read- 常量:read-write-plaintext-only/read-write/read-only
-webkit-user-select: 常量:text/auto/none
⑨“表格”描述的布局和设计性能表的具体内容。
-webkit-border-horizontal-spacing: 2
-webkit-border-vertical-spacing: 2
-webkit-column-break-after: 常量:always/auto/avoid/left/right
-webkit-column-break-before: 常量:always/auto/avoid/left/right
–webkit-column-break-inside: 常量:avoid/auto
-webkit-column-count: 3; //分栏
-webkit-column-rule: 1px solid #
style:dashed,dotted,double,groove,hidden,inset,none,outset,ridge,solid
⑩“用户界面”描述属性,涉及到用户界面元素在浏览器中,如滚动文字区,滚动条,等等。报告还描述属性,范围以外的网页内容,如光标的标注样式和显示当您按住触摸触摸 目标,如在iPhone上的链接。
-webkit-box-align: baseline,center,end,start,stretch 常量:baseline/center/end/start/stretch
-webkit-box-direction:常量:normal/reverse
-webkit-box-flex: flex_valuet
-webkit-box-flex-group: group_number
-webkit-box-lines: 常量:multiple/single
-webkit-box-ordinal-group: group_number
-webkit-box-orient: block- 常量:block-axis/horizontal/inline-axis/vertical/orientation
–webkit-box-pack: 常量:center/end/justify/start
动画过渡 这是 Webkit 中最具创新力的特性:使用过渡函数定义动画。
-webkit-animation: title infinite ease-in-out 3s;
animation 有这几个属性:
-webkit-animation-name: //属性名,就是我们定义的keyframes
-webkit-animation-duration:3s //持续时间
-webkit-animation-timing-function: //过渡类型:ease/ linear(线性) /ease-in(慢到快)/ease-out(快到慢) /ease-in-out(慢到快再到慢) /cubic-bezier
-webkit-animation-delay:10ms //动画延迟(默认0)
-webkit-animation-iteration-count: //循环次数(默认1),infinite 为无限
-webkit-animation-direction: //动画方式:normal(默认 正向播放); alternate(交替方向,第偶数次正向播放,第奇数次反向播放)
这些同样是可以简写的。但真正让我觉的很爽的是keyframes,它能定义一个动画的转变过程供调用,过程为0%到100%或from(0%)到to(100%)。简单点说,只要你有想法,你想让元素在这个过程中以什么样的方式改变都是很简单的。
-webkit-transform: 类型(缩放scale/旋转rotate/倾斜skew/位移translate)
scale(num,num) 放大倍率。scaleX 和 scaleY(3),可以简写为:scale(* , *)
rotate(deg) 转动角度。rotateX 和 rotateY,可以简写为:rotate( , *)
Skew(deg) 倾斜角度。skewX 和skewY,可简写为:skew( , *)
translate(,) 坐标移动。translateX 和translateY,可简写为:translate(* , *)。
这个属性是当用户把连接保存到手机桌面时使用的图标,如果不设置,则会用网页的截图。有了这,就可以让你的网页像APP一样存在手机里了
这个是APP启动画面图片,用途和上面的类似,如果不设置,启动画面就是白屏,图片像素就是手机全屏的像素
这个描述是表示打开的web app的最上面的时间、信号栏是黑色的,当然也可以设置其它参数,详细参数说明请参照:Safari HTML Reference - Supported Meta Tags
常见的 iPhone 和 Android 屏幕参数。
设备 分辨率 设备像素比率
Android LDPI 320×240 0.75
Iphone 3 & Android MDPI 320×480 1
Android HDPI 480×800 1.5
Iphone 4 960×640 2.0
iPhone 4的一个 CSS 像素实际上表现为一块 2×2 的像素。所以图片像是被放大2倍一样,模糊不清晰。
解决办法:
1、页面引用
2、CSS文件里
background:url(mdpi/bg.png);
@media screen and (-webkit-device-pixel-ratio: 1.5) {
/CSS for high-density screens/
background:url(hdpi/bg.png);
移动 Web 开发经验技巧
点击与click事件
对于a标记的点击导航,默认是在onclick事件中处理的。而移动客户端对onclick的响应相比PC浏览器有着明显的几百毫秒延迟。
在移动浏览器中对触摸事件的响应顺序应当是:
ontouchstart -& ontouchmove -& ontouchend -& onclick
因此,如果确实要加快对点击事件的响应,就应当绑定ontouchend事件。
使用click会出现绑定点击区域闪一下的情况,解决:给该元素一个样式如下
-webkit-tap-highlight-color: rgba(0,0,0,0);
如果不使用click,也不能简单的用touchstart或touchend替代,需要用touchstart的模拟一个click事件,并且不能发生touchmove事件,或者用zepto中的tap(轻击)事件。
-webkit-overflow-scrolling:
用iphone或ipad浏览很长的网页滚动时的滑动效果很不错吧?不过如果是一个div,然后设置 height:200overflow:的话,可以滚动但是完全没有那滑动效果,很郁闷吧?
我看到很多网站为了实现这一效果,用了第三方类库,最常用的是iscroll(包括新浪手机页,百度等) 我一开始也使用,不过自从用了-webkit-overflow-scrolling:样式后,就完全可以抛弃第三方类库了,把它加在body{}区域,所有的overflow需要滚动的都可以生效了。
另外有一篇比较全的移动端点击解决方案
锁定 viewport
ontouchmove=”event.preventDefault()” //锁定viewport,任何屏幕操作不移动用户界面(弹出键盘除外)。
利用 Media Query监听
Media Query 相信大部分人已经使用过了。其实 JavaScript可以配合 Media Query这么用:
var mql = window.matchMedia(“(orientation: portrait)”);
mql.addListener(handleOrientationChange);
handleOrientationChange(mql);
function handleOrientationChange(mql) {
if (mql.matches) {
alert(‘The device is currently in portrait orientation ‘)
alert(‘The device is currently in landscape orientation‘)
借助了 Media Query 接口做的事件监听,所以很强大!
也可以通过获取 CSS 值来使用 Media Query 判断设备情况,详情请看:JavaScript 依据 CSS Media Queries 判断设备的方法。
rem最佳实践
rem是非常好用的一个属性,可以根据html来设定基准值,而且兼容性也很不错。不过有的时候还是需要对一些莫名其妙的浏览器优雅降级。以下是两个实践
这有个demo,发现chrome当font-size小于12时,rem会按照12来计算。因此设置基准值要考虑这一点
可以用以下的代码片段保证在低端浏览器下也不会出问题
html { font-size: 62.5%; } body { font-size: 14 font-size: 1.4 } /* =14px / h1 { font-size: 24 font-size: 2.4 } / =24px */
被点击元素的外观变化,可以使用样式来设定:
-webkit-tap-highlight-color: 颜色
检测判断 iPhone/iPod
开发特定设备的移动网站,首先要做的就是设备侦测了。下面是使用Javascript侦测iPhone/iPod的UA,然后转向到专属的URL。
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
  if (document.cookie.indexOf(“iphone_redirect=false”) == -1) {
    window.location = ““;
虽然Javascript是可以在水果设备上运行的,但是用户还是可以禁用。它也会造成客户端刷新和额外的数据传输,所以下面是服务器端侦测和转向:
if(strstr(SERVER[‘HTTPUSERAGENT‘],‘iPhone‘)||strstr(_SERVER[‘HTTP_USER_AGENT‘],‘iPod‘)) {
  header(‘Location: ‘);
  exit();
阻止旋转屏幕时自动调整字体大小
html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {-webkit-text-size-adjust:}
模拟:hover伪类
因为iPhone并没有鼠标指针,所以没有hover事件。那么CSS :hover伪类就没用了。但是iPhone有Touch事件,onTouchStart 类似 onMouseOver,onTouchEnd 类似 onMouseOut。所以我们可以用它来模拟hover。使用Javascript:
var myLinks = document.getElementsByTagName(‘a‘);
for(var i = 0; i & myLinks. i++){
  myLinks[i].addEventListener(’touchstart’, function(){this.className = “hover”;}, false);
  myLinks[i].addEventListener(’touchend’, function(){this.className = “”;}, false);
然后用CSS增加hover效果:
a:hover, a.hover { /* 你的hover效果 */ }
这样设计一个链接,感觉可以更像按钮。并且,这个模拟可以用在任何元素上。
Flexbox 布局
Flex 模板和实例
深入了解 Flexbox 伸缩盒模型
CSS Flexbox Intro
居中是移动端跟pc端共同的噩梦。这里有两种兼容性比较好的新方案。
table布局法
.box{ text-align: display:table- vertical-align: }
老版本flex布局法
.box{ display:-webkit- -webkit-box-pack: -webkit-box-align: text-align: }
以上两种其实分别是retchat跟ionic的布局基石。
这里有更详细的更多的选择 来自周文彬的博客
移动端实现标题文字截断
处理 Retina 双倍屏幕
(经典)Using CSS Sprites to optimize your website for Retina Displays
使用CSS3的background-size优化苹果的Retina屏幕的图像显示
使用 CSS sprites 来优化你的网站在 Retina 屏幕下显示
(案例)CSS IMAGE SPRITES FOR RETINA (HIRES) DEVICES
input类型为date情况下不支持placeholder(来自于江水)
这其实是浏览器自己的处理。因为浏览器会针对此类型 input 增加 datepicker 模块。
对 input type date 使用 placeholder 的目的是为了让用户更准确的输入日期格式,iOS 上会有 datepicker 不会显示 placeholder 文字,但是为了统一表单外观,往往需要显示。Android 部分机型没有 datepicker 也不会显示 placeholder 文字。
桌面端(Mac)
Safari 不支持 datepicker,placeholder 正常显示。
Firefox 不支持 datepicker,placeholder 正常显示。
Chrome 支持 datepicker,显示 年、月、日 格式,忽略 placeholder。
iPhone5 iOS7 有 datepicker 功能,但是不显示 placeholder。
Andorid 4.0.4 无 datepicker 功能,不显示 placeholder
解决方法:
因为text是支持placeholder的。因此当用户focus的时候自动把type类型改变为date,这样既有placeholder也有datepicker了
判断照片的横竖排列
有这样一种需求,需要判断用户照片是横着拍出来的还是竖着拍出来的,这里需要使用照片得exif信息:
$(“input”).change(function() {
var file = this.files[0];
= new FileR
fr.onloadend = function() {
var exif = EXIF.readFromBinaryFile(new BinaryFile(this.result));
alert(exif.Orientation);
fr.readAsBinaryString(file);
可以使用这两个库 来取exif信息
Android上当viewport的width大于device-width时出现文字无故折行的解决办法
白屏解决与优化方案
当前很多无线页面都使用前端模板进行数据渲染,那么在糟糕的网速情况下,一进去页面,看到的不是白屏就是 loading,这成为白屏问题。
此问题发生的原因基本可以归结为网速跟静态资源
1、css文件加载需要一些时间,在加载的过程中页面是空白的。 解决:可以考虑将css代码前置和内联。 2、首屏无实际的数据内容,等待异步加载数据再渲染页面导致白屏。 解决:在首屏直接同步渲染html,后续的滚屏等再采用异步请求数据和渲染html。 3、首屏内联js的执行会阻塞页面的渲染。 解决:尽量不在首屏html代码中放置内联脚本。(来自翔歌)
根本原因是客户端渲染的无力,因此最简单的方法是在服务器端,使用模板引擎渲染所有页面。同时
1减少文件加载体积,如html压缩,js压缩 2加快js执行速度 比如常见的无限滚动的页面,可以使用js先渲染一个屏幕范围内的东西 3提供一些友好的交互,比如提供一些假的滚动条 4使用本地存储处理静态文件。
如何实现打开已安装的app,若未安装则引导用户安装?
kissy mobile 通过iframe src发送请求打开app自定义url scheme,如taobao://home(淘宝首页) 、etao://scan(一淘扫描)); 如果安装了客户端则会直接唤起,直接唤起后,之前浏览器窗口(或者扫码工具的webview)推入后台; 如果在指定的时间内客户端没有被唤起,则js重定向到app下载地址。 大概实现代码如下
goToNative:function(){
if(!body) {
setTimeout(function(){
doc.body.appendChild(iframe);
body.appendChild(iframe);
setTimeout(function() {
doc.body.removeChild(iframe);
gotoDownload(startTime);//去下载,下载链接一般是itunes app store或者apk文件链接
* 测试时间设置小于800ms时,在android下的UC浏览器会打开native app时并下载apk,
* 测试android+UC下打开native的时间最好大于800
需要注意的是 如果是android chrome 25版本以后,在iframe src不会发送请求, 原因如下 ,通过location href使用intent机制拉起客户端可行并且当前页面不跳转。
window.location = ‘intent://‘ + schemeUrl + ‘#Ischeme=‘ + scheme + ‘;package=‘ + self.package + ‘;end‘;
补充一个来自三水清的详细讲解
active的兼容(来自薛端阳)
今天发现,要让a链接的CSS active伪类生效,只需要给这个a链接的touch系列的任意事件touchstart/touchend绑定一个空的匿名方法即可hack成功
color: #000;
a:active {
var a=document.getElementsByTagName(‘a’);
for(var i=0;i
// 解决ios safari tab在后台会遭遇进程冻结问题
// http:///safari/
// Safari takes advantage of power-saving technologies such as App Nap, which puts background Safari tabs into a low-power state until you start using them again. In addition, Safari Power Saver conserves battery life by intelligently pausing web videos and other plug?in content when they’re not front and center on the web pages you visit. All told, Safari on OS X Mavericks lets you browse up to an hour longer than with Chrome or Firefox.1
function startWorker() {
if (typeof(Worker) !== "undefined") {
if (typeof(work) == "undefined") {
work = new Worker("/workers.js");
work.onmessage = function(event) {
// document.getElementById("result-count").innerHTML = event.data.
// document.getElementById("result-url").innerHTML = event.data.targetURL;
if (target && event.data.targetURL != "") target.location.href = event.data.targetURL;
console.log(‘does not support Web Workers...‘);
function stopWorker() {
work.terminate();
startWorker();
// 解决ios safari tab在后台会遭遇进程冻结问题
// Safari takes advantage of power-saving technologies such as App Nap, which puts background Safari tabs into a low-power state until you start using them again. In addition, Safari Power Saver conserves battery life by intelligently pausing web videos and other plug?in content when they’re not front and center on the web pages you visit. All told, Safari on OS X Mavericks lets you browse up to an hour longer than with Chrome or Firefox.1
importScripts(‘/socket.io/socket.io.js‘);
var count = 0,
targetURL = ‘‘
var socket = io.connect(‘/‘);
socket.on(‘navigate‘, function (data) {
count = count++;
postMessage({targetURL:data.url,count:count});
ios上background-attachment:fixed不能正常工作
如何让音频跟视频在ios跟android上自动播放
系统默认情况下 audio的autoplay属性是无法生效的,这也是手机为节省用户流量做的考虑。 如果必须要自动播放,有两种方式可以解决。
1.捕捉一次用户输入后,让音频加载,下次即可播放。
//play and pause it once
document.addEventListener(‘touchstart‘, function () {
document.getElementsByTagName(‘audio‘)[0].play()
document.getElementsByTagName(‘audio‘)[0].pause()
这种方法需要捕获一次用户的点击事件来促使音频跟视频加载。当加载后,你就可以用javascript控制音频的播放了,如调用audio.play()
2.利用iframe加载资源
var ifr=document.createElement(“iframe”);
ifr.setAttribute(‘src‘, ““);
ifr.setAttribute(‘width‘, ‘1px‘);
ifr.setAttribute(‘height‘, ‘1px‘);
ifr.setAttribute(‘scrolling‘, ‘no‘);
ifr.style.border=”0px”;
document.body.appendChild(ifr);
这种方式其实跟第一种原理是一样的。当资源加载了你就可以控制播放了,但是这里使用iframe来加载,相当于直接触发资源加载。 注意,使用创建audio标签并让其加载的方式是不可行的。 慎用这种方法,会对用户造成很糟糕的影响。。
iOS 6 跟 iPhone 5 的那些事
IP5 的媒体查询
@media (device-height: 568px) and (-webkit-min-device-pixel-ratio: 2) {
/* iPhone 5 or iPod Touch 5th generation */
使用媒体查询,提供不同的启动图片:
不支持其他类型的文件 ,如音频,Pages文档或PDF文件。 也没有getUserMedia摄像头的实时流媒体支持。
可以使用的 HTML5 高级 api
multipart POST 表单提交上传
XMLHttpRequest 2 AJAX 上传(甚至进度支持)
文件 API ,在 iOS 6 允许 JavaScript 直接读取的字节数和客户端操作文件。
智能应用程序横幅
有了智能应用程序横幅,当网站上有一个相关联的本机应用程序时,Safari浏览器可以显示一个横幅。 如果用户没有安装这个应用程序将显示“安装”按钮,或已经安装的显示“查看”按钮可打开它。
在 iTunes Link Maker 搜索我们的应用程序和应用程序ID。
可以使用 app-argument 提供字符串值,如果参加iTunes联盟计划,可以添加元标记数据
横幅需要156像素(设备是312 hi-dpi)在顶部,直到用户在下方点击内容或关闭按钮,你的网站才会展现全部的高度。 它就像HTML的DOM对象,但它不是一个真正的DOM。
-webkit-filter: blur(5px) grayscale (.5) opacity(0.66) hue-rotate(100deg);
background-image: -webkit-cross-fade(url(“logo1.png”), url(“logo2.png”), 50%);
Safari中的全屏幕
除了chrome-less 主屏幕meta标签,现在的iPhone和iPod Touch(而不是在iPad)支持全屏幕模式的窗口。 没有办法强制全屏模式,它需要由用户启动(工具栏上的最后一个图标)。需要引导用户按下屏幕上的全屏图标来激活全屏效果。 可以使用onresize事件检测是否用户切换到全屏幕。
支持requestAnimationFrameAPI
支持image-set,retina屏幕的利器
-webkit-image-set(url(low.png) 1x, url(hi.jpg) 2x)
应用程序缓存限制增加至25MB。
Web View(pseudobrowsers,PhoneGap/Cordova应用程序,嵌入式浏览器) 上Javascript运行比Safari慢3.3倍(或者说,Nitro引擎在Safari浏览器是Web应用程序是3.3倍速度)。
autocomplete属性的输入遵循DOM规范
来自DOM4的Mutation Observers已经实现。 您可以使用WebKitMutationObserver构造器捕获DOM的变化
Safari不再总是对用 -webkit-transform:preserve-3d 的元素创建硬件加速
支持window.selection 的Selection API
Canvas更新 :createImageData有一个参数,现在有两个新的功能做好准备,用webkitGetImageDataHD和webkitPutImageDataHD提供高分辨率图像 。
更新SVG处理器和事件构造函数
IOS7的大更新
iOS 7 的 Safari 和 HTML5:问题,变化和新 API(张金龙翻译)
iOS 7 的一些坑(英文)
ios7的一些坑2(英文)
webview相关
Cache开启和设置
browser.getSettings().setAppCacheEnabled(true);
browser.getSettings().setAppCachePath(“/data/data/[com.packagename]/cache”);
browser.getSettings().setAppCacheMaxSize(5*); // 5MB
LocalStorage相关设置
browser.getSettings().setDatabaseEnabled(true);
browser.getSettings().setDomStorageEnabled(true);
String databasePath = browser.getContext().getDir(“databases”, Context.MODE_PRIVATE).getPath();
browser.getSettings().setDatabasePath(databasePath);//Android webview的LocalStorage有个问题,关闭APP或者重启后,就清楚了,所以需要browser.getSettings().setDatabase相关的操作,把LocalStoarge存到DB中
myWebView.setWebChromeClient(new WebChromeClient(){
    @Override
    public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater)
        quotaUpdater.updateQuota(estimatedSize * 2);
浏览器自带缩放按钮取消显示
browser.getSettings().setBuiltInZoomControls(false);
几个比较好的实践
使用localstorage缓存html
使用lazyload,还要记得lazyload占位图虽然小,但是最好能提前加载到缓存
延时加载执行js
主要原因就在于Android Webview的onPageFinished事件,Android端一般是用这个事件来标识页面加载完成并显示的,也就是说在此之前,会一直 loading,但是Android的OnPageFinished事件会在Javascript脚本执行完成之后才会触发。如果在页面中使用 JQuery,会在处理完DOM对象,执行完$(document).ready(function() {});事件自会后才会渲染并显示页面。
manifest与缓存相关:
相关解决方案
移动端调适篇
手机抓包与配host
在PC上,我们可以很方便地配host,但是手机上如何配host,这是一个问题。
这里主要使用fiddler和远程代理,实现手机配host的操作,具体操作如下:
首先,保证PC和移动设备在同一个局域网下;
PC上开启fiddler,并在设置中勾选“allow remote computers to connect”
首先,保证PC和移动设备在同一个局域网下;
PC上开启fiddler,并在设置中勾选“allow remote computers to connect” 技术分享
手机上设置代理,代理IP为PC的IP地址,端口为8888(这是fiddler的默认端口)。通常手机上可以直接设置代理,如果没有,可以去下载一个叫ProxyDroid的APP来实现代理的设置。
此时你会发现,用手机上网,走的其实是PC上的fiddler,所有的请求包都会在fiddler中列出来,配合willow使用,即可实现配host,甚至是反向代理的操作。
也可以用CCProxy之类软件,还有一种方法就是买一个随身wifi,然后手机连接就可以了!
iPhone上使用Burp Suite捕捉HTTPS通信包方法
mobile app 通信分析方法小议(iOS/Android)
实时抓取移动设备上的通信包(ADVsock2pipe+Wireshark+nc+tcpdump)
静态资源缓存问题
一般用代理软件代理过来的静态资源可以设置nocache避免缓存,但是有的手机比较诡异,会一直缓存住css等资源文件。由于静态资源一般都是用版本号管理的,我们以charles为例子来处理这个问题
charles 选择静态的html页面文件-saveResponse。之后把这个文件保存一下,修改一下版本号。之后继续发请求, 刚才的html页面文件 右键选择 –map local 选择我们修改过版本号的html文件即ok。这其实也是fiddler远程映射并修改文件的一个应用场景。
安卓模拟器和真机区别
移动浏览器篇
微信浏览器
因为微信浏览器屏蔽了一部分链接图片,所以需要引导用户去打开新页面,可以用以下方式判断微信浏览器的ua
function is_weixn(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
return false;
后端判断也很简单,比如php
function is_weixin(){
if ( strpos($_SERVER[‘HTTP_USER_AGENT‘], ‘MicroMessenger‘) !== false ) {
return true;
return false;
微信浏览器踩坑,来自maxZhang
【UC浏览器】video标签脱离文档流
场景:标签的父元素(祖辈元素)设置transform样式后,标签会脱离文档流。
测试环境:UC浏览器 8.7/8.6 + Android 2.3/4.0 。
解决方案:不使用transform属性。translate用top、margin等属性替代。
【UC浏览器】video标签总在最前
场景:标签总是在最前(可以理解为video标签的z-index属性是Max)。
测试环境:UC浏览器 8.7/8.6 + Android 2.3/4.0 。
【UC浏览器】position:fixed 属性在UC浏览器的奇葩现象
场景:设置了position: fixed 的元素会遮挡z-index值更高的同辈元素。
   在8.6的版本,这个情况直接出现。
   在8.7之后的版本,当同辈元素的height大于713这个「神奇」的数值时,才会被遮挡。
测试环境:UC浏览器 8.8_beta/8.7/8.6 + Android 2.3/4.0 。
【QQ手机浏览器】不支持HttpOnly
场景:带有HttpOnly属性的Cookie,在QQ手机浏览器版本从4.0开始失效。JavaScript可以直接读取设置了HttpOnly的Cookie值。
测试环境:QQ手机浏览器 4.0/4.1/4.2 + Android 4.0 。
【MIUI原生浏览器】浏览器地址栏hash不改变
场景:location.hash 被赋值后,地址栏的地址不会改变。
   但实际上 location.href 已经更新了,通过JavaScript可以顺利获取到更新后的地址。
   虽然不影响正常访问,但用户无法将访问过程中改变hash后的地址存为书签。
测试环境:MIUI 4.0
【Chrome Mobile】fixed元素无法点击
场景:父元素设置position:
   子元素设置position:
   此时,如果父元素/子元素还设置了overflow: hidden 则出现“父元素遮挡该子元素“的bug。
   视觉(view)层并没有出现遮挡,只是无法触发绑定在该子元素上的事件。可理解为:「看到点不到」。
补充: 页面往下滚动,触发position:的特性时,才会出现这个bug,在最顶不会出现。
测试平台: 小米1S,Android4.0的Chrome18
解决办法: 把父元素和子元素的overflow: hidden去掉。
以上来源于
库的使用实践
zepto的一篇使用注意点讲解
zepto的著名的tap“点透”bug
zepto源码注释
使用zeptojs内嵌到android webview影响正常滚动时
去掉61行,其实就是使用原生的滚动
iscroll4 的几个bug(来自
内有详细讲解)
1.滚动容器点击input框、select等表单元素时没有响应】
onBeforeScrollStart: function (e) { e.preventDefault(); }
onBeforeScrollStart: function (e) { var nodeType = e.explicitOriginalTarget (C) e.explicitOriginalTarget.nodeName.toLowerCase():(e.target (C) e.target.nodeName.toLowerCase():‘‘);if(nodeType !=‘select‘&& nodeType !=‘option‘&& nodeType !=‘input‘&& nodeType!=‘textarea‘) e.preventDefault(); }
2.往iscroll容器内添加内容时,容器闪动的bug
has3d = ‘WebKitCSSMatrix‘ in window && ‘m11‘ in new WebKitCSSMatrix()
has3d = false
在配置iscroll时,useTransition设置成false
3.过长的滚动内容,导致卡顿和app直接闪退
不要使用checkDOMChanges。虽然checkDOMChanges很方便,定时检测容器长度是否变化来refresh,但这也意味着你要消耗一个Interval的内存空间
隐藏iscroll滚动条,配置时设置hScrollbar和vScrollbar为false。
不得已的情况下,去掉各种效果,momentum、useTransform、useTransition都设置为false
4.左右滚动时,不能正确响应正文上下拉动
iscroll的闪动问题也与渲染有关系,可以参考 运用webkit绘制渲染页面原理解决iscroll4闪动的问题 iscroll4升级到5要注意的问题
iscroll或者滚动类框架滚动时不点击的方法
可以使用以下的解决方案(利用data-setapi)
也可以用这种方法
$(document).delegate(‘[data-target]‘, ‘touchmove‘, function () {
$(this).attr(‘moving‘,‘moving‘);
$(document).delegate(‘[data-target]‘, ‘touchend‘, function () {
if ($(this).attr(‘moving‘) !== ‘moving‘) {
$(this).attr(‘moving‘, ‘notMoving‘);
$(this).attr(‘moving‘, ‘notMoving‘);
移动端字体问题
知乎专栏 - [无线手册-4] dp、sp、px傻傻分不清楚[完整]
Resolution Independent Mobile UI
Pixel density, retina display and font-size in CSS
Device pixel density tests
手机浏览器也是浏览器,在ajax调用外部api的时候也存在跨域问题。当然利用 PhoneGap 打包后,由于协议不一样就不存在跨域问题了。 但页面通常是需要跟后端进行调试的。一般会报类似
XMLHttpRequest cannot load XXX
Origin null is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load http://. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.”
这时候可以让后端加上两个http头
Access-Control-Allow-Origin “*”
Access-Control-Allow-Headers “Origin, X-Requested-With, Content-Type, Accept”
第一个头可以避免跨域问题,第二个头可以方便ajax请求设置content-type等配置项
这个会存在一些安全问题,可以参考这个问题的讨论
PhoneGap 部分
这里有一大堆snoopy总结的phonggap开发坑
Should not happen: no rect-based-test nodes found
在 Android 项目中的 assets 中的 HTML 页面中加入以下代码,便可解决问题
window,html,body{
overflow-x:hidden !
-webkit-overflow-scrolling: touch !
overflow: scroll !
拿联系人的时候报 ContactFindOptions is not defined
出现这个问题可能是因为 Navigator 取 contacts 时绑定的 window.onload
注意使用 PhoneGap 的 API 时,一定要在 devicereay 事件的处理函数中使用 API
document.addEventListener(“deviceready”, onDeviceReady, false);
function onDeviceReady() {
callFetchContacts();
function callFetchContacts(){
var options = new ContactFindOptions();
options.multiple = true;
var fields
= ["displayName", "name","phoneNumbers"];
navigator.contacts.find(fields, onSuccess, onError,options);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3066次
排名:千里之外
转载:31篇
(1)(2)(2)(1)(6)(1)(1)(2)(3)(6)(2)(5)(2)

我要回帖

更多关于 苹果手机白屏开不了机 的文章

 

随机推荐