移动端手机调试的几种方法

JavaScript011

移动端手机调试的几种方法,第1张

很多时候,我们在进行移动端开发时,都是先在PC端使用手机模拟器进行调试,没有问题后,我们才会在手机端的浏览器进行测试,这个时候,如果没有出现问题,皆大欢喜。但是一旦出现问题,我们就很难解决,因为缺乏可视化的界面。不似在PC端,我们能直观的去改变样式,或者是进行断点调试。

这里主要介绍三种方法:

1、Chrome DevTools(谷歌浏览器)的模拟手机调试

2、IOS Safari真机调试

3、Chrome DevTools远程调试Android

这种调试方式不仅能用于模拟手机调试还是主要的PC端页面调试的方式,这里主要说用于手机调试。

a.谷歌浏览器的开发者工具,可以参照下图右键选择”检查“或者使用快捷键F12,打开开发者工具。

b.打开后看到类似如下界面的开发者调试界面,Elements可以查看文档元素,Console可以在线调试js和查看输出结果,Sources可以调试JS和查看依赖资源,Network查看所有的网络请求等等。

c.如果没有需要模拟的机型怎么办?可以增加,点开机型设置面板,选择edit,然后可以在右方修改展示机型,如下:

d.还可以模拟不同网络情况。

a.使用数据线将 iPhone 与 Mac 相连

b.iPhone 开启 Web 检查器(设置 -> Safari -> 高级 -> 开启 Web 检查器)

c.iPhone 使用 Safari 浏览器打开要调试的页面(以兰亭单品页为例)

d.Mac 打开 Safari 浏览器调试(菜单栏 —> 开发 -> iPhone 设备名 -> 选择调试页面)

如果你的菜单栏没有“开发”选项,可以到左上角 Safari -> 偏好设置 -> 高级 -> 在菜单栏中显示“开发”菜单。

e.在弹出的 Safari Developer Tools 中调试。

经过如上步骤就可在 Mac 端调试 iPhone 上 Safari 运行的页面了。

a.在 Chrome 浏览器地址栏中输入  chrome://inspect/#devices  并回车,就可以打开 Inspect 调试界面,此时我们勾选Discover USB devices 选项便可以看到设备列表。

b.然后打开手机中开发者选项并打开 USB 调试开关(具体方法自行百度,不同手机有一定区别),使用数据线将手机连接到电脑上,我们就可以在设备列表中看到自己的设备。

c.这时,打开手机上的Chrome 浏览器,随便打开一个网址(以兰亭单品页为例),设备列表中你的设备下便会出现你打开的页面。

d.此时我们点击 inspect 选项。

e.接下来你便可以和调试 PC 界面一样通过 Chrome 进行你所需要的调试,你在左侧屏幕上做的一切操作和你的手机上的操作会始终保持同步,如果你嫌左边这块多余,也可以关闭 Toggle Screencast 只保留控制台本身。

具体原因是这样的:

1、Java调用js里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法。

2、Java调用js的函数、没有返回值、调用了就控制不到了。

3、Js调用Java的方法、返回值如果是字符串、你会发现这个字符串是native的、转成locale的才能正常使用、使用toLocaleString()函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间。

4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验。

android安卓手机微信浏览器偶尔也有这样的问题,经过多次调试,发现是微信浏览器缓存了渲染页面,没有重新渲染页面,导致window.onload中JS无法执行。

经过以上分析判断,给出的解决方案就是,如果使用了缓存,自动重载页面。以下是JS代码解决方案:

window.onpageshow = function(event) {

if (event.persisted) {

window.location.reload()

}

}

或者下方代码:

var isPageHide = false

window.addEventListener('pageshow', function () {

if (isPageHide) {

window.location.reload()

}

})

window.addEventListener('pagehide', function () {

isPageHide = true

})

html头部处理缓存信息:

扩展说明:

pageshow:

当一条会话历史记录被执行的时候将会触发页面显示(pageshow)事件。(这包括了后退/前进按钮操作,同时也会在onload 事件触发后初始化页面时触发)