给手机端页面留一个调试后门吧(vue)
当我们在浏览器开发vue页面时,由于浏览器对于调试有天然的支持,我们开发起来很方便。但是现在已经进入了移动端时代,移动端页面的需求越来越大。
在开发移动端页面的时候我们通常是在浏览器完成开发完成,之后才在手机端测试,如果测试出现问题还得重新回到浏览器上寻找错误。甚至还有嵌入在APP的页面,经过调试之后还要重新发包。当然还有更加奇怪的现象,由于手机浏览器和Web浏览器的差异,经常会发现在Web浏览器上好好的,一到手机上就不行的情况。
因此首先我们需要一个能在手机端调试的插件。如果你还在使用alert一步步来定位移动端页面bug的话,不妨试试vConsole。
vConsole
vConsole是一个由微信公众平台前端团队研发的Web前端开发者面板,可用于展示console日志,方便开发、调试。可以在vConsole.js下载地址下载所需的js。下载解压之后,在dist文件夹中找到vconsole.min.js,加入工程中:
<script src="path/to/vconsole.min.js"></script>
<script>
// init vConsole
var vConsole = new VConsole();
console.log('Hello world');
</script>
请注意,VConsole 只是 vConsole 的原型,而非一个已实例化的对象。所以在手动 new 实例化之前,vConsole 不会被插入到网页中。

在安装完vConsole之后,你以为事情就结束了吗?
还有一个很大的问题就是肯定不能让用户看到我们的调试页面的,因此我们需要偷偷给我们的程序设置后门。
动态引入代码
这里有两种设计的思路以供参考:
- 在程序中某个地方设置一个后门。点击10次或者长按10秒之后自动引入这段代码。
- 通过运行环境来引入动态vConsole。即在测试阶段引入,而生产环境则不会引入这段代码。
设置后门
在程序中某个地方设置长按10秒自动引入代码。
首先长按10秒的效果需要3个事件结合才能产生。
- @touchstart:开始长按
- @touchmove:长安过程中移动
- @touchend:结束长按
绑定事件
代码如下,在标签上引入这三个事件:
<div @touchstart="handleTouchstart" @touchmove="handleTouchmove" @touchend="handleTouchend">
<van-col span="24" class="loginPage-title">title<an-col>
</div>
对应的方法:
handleTouchstart() {
touchStart();
},
handleTouchmove() {
touchMove();
},
handleTouchend() {
touchEnd();
},
其中的touchStart,touchMove,touchEnd方法由外部文件import进来,便于统一管理,当然其实也可以直接在这个文件里实现。
长按10秒
首先什么才叫长按10秒。touchstart然后开始计时10秒之后肯定不叫长按10秒,这样就叫做点击过后10秒了。长按10秒应该是手指触碰连续10秒,期间不能触发touchmove和touchend事件。
因此思路应该是,touchstart开始计时,期间如果触发了touchmove和touchend事件则将计时器重置:
let timeOutEvent = null;
export const touchStart = () => {
timeOutEvent = setTimeout(function () {
longPress();
}, 10000);
};
export const touchMove = () => {
clearTimeout(timeOutEvent);
timeOutEvent = 0;
}
export const touchEnd = () => {
clearTimeout(timeOutEvent);
}
在longPress方法中去动态引入vConsole:
const longPress = () => {
clearTimeout(timeOutEvent); //清除定时器
timeOutEvent = 0;
//执行长按要执行的内容
vConsoleLog()
};
const vConsoleLog = () => {
let mapScript = document.getElementById("vConsoleLog");
if(mapScript){
return;
}
let script = document.createElement('script');
script.id = 'vConsoleLog';
script.type = 'text/javascript';
script.src = './console.js';
document.body.appendChild(script);
}
这样,我们就在程序中植入了一个后门,需要调试的时候只需要长按10秒,vConsole就出来了。
根据环境动态引入
如果想要严谨一点,不希望用户在任何时候看到这个调试按钮的话,则可以根据环境(env)来引入vConsole。
转评赞就是最大的鼓励
给手机端页面留一个调试后门吧(vue)的更多相关文章
- 【web前端】移动端控制台插件,手机端页面查看相关页面控制台信息
一般调试手机端页面时,基本是在PC端使用手机模式进行断点或console调试.或查看有用的控制台信息的,但依旧有部分功能无法在PC端调试,经常需要使用alert进行断点,然后在手机端看效果,但是这样并 ...
- 手机端页面自适应解决方案—rem布局进阶版
手机端页面自适应解决方案—rem布局进阶版 https://www.jianshu.com/p/985d26b40199 注:本文转载之处:https://www.cnblogs.com/anni ...
- 手机端页面自适应解决方案—rem布局(进阶版,附源码示例)
转自:https://segmentfault.com/a/1190000007350680 一年前笔者写了一篇 <手机端页面自适应解决方案—rem布局>,意外受到很多朋友的关注和喜欢.但 ...
- 移动端(手机端)页面自适应解决方案—rem布局篇
移动端(手机端)页面自适应解决方案-rem布局 假设设计妹妹给我们的设计稿尺寸为750 * 1340.结合网易.淘宝移动端首页html元素上的动态font-size属性.设计稿尺寸.前端与设计之间协作 ...
- 关于HTML5手机端页面缩放的问题
通常在写HTML5手机端页面的时候,我们会发现页面所显示元素的比例不正确,那此时我们需要添加的就是: <meta name="viewport" content=" ...
- rem手机端页面自适应完美解决方案(最新)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- PC端页面转换成手机端页面的分辨率问题的理解
PC端页面转换成手机端页面的分辨率问题的理解 px vw rem 假如就以a4纸模式为设计图 ,在a3纸模式中设计,然后设计出来展示在不同的a4纸模式上 通常是 750px -> 100vw / ...
- 使用Fiddler调试手机端页面请求/抓包
简介 Fiddler作为一个强大的抓包工具,也是非常强大的http(s)协议分析工具,我们通常用它跟踪请求,PC端使用这里暂不做介绍(这里前提是熟悉PC端的使用),使用很简单. 那么我们如何来用它来跟 ...
- 手机端页面rem自适应脚本
什么是rem 参照 web app变革之rem 在我看来,rem就是1rem单位就等于html节点fontsize的像素值.所以改变html节点的fontsize是最为关键的一步.根据手机宽度改变相对 ...
随机推荐
- Linux平台 Oracle 19c RAC安装Part1:准备工作
一.实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二.安装前期准备工作 2.1 各节点系统时间校对 2.2 各节点关闭防火墙和 ...
- 【Intellij】Hot Swap Failed & class reloaded
用 Intellij IDEA 编译程序时遇到了这个问题,如下图所示: 对结果貌似没什么影响,但暂时没找到出现这个情况的原因……
- 补充Java面试记录
补充Java面试记录 背景:这两天面试遇到的部分问题都分散在了前面两篇文摘中,这里再做一些其他的记录,以备不时之需! 一.谈谈你对SpringBoot的理解? SpringBoot简介:SpringB ...
- JAVA并发编程之倒计数器CountDownLatch
CountDownLatch 的使用场景:在主线程中开启多线程去并行执行任务,并且主线程需要等待所有子线程执行完毕后汇总返回结果. 我把源码中的英文注释全部删除,写上自己的注释.就剩下 70 行不到的 ...
- 数据结构之最小堆的实现C++版
完全二叉树之所以用数组的方式存在,在于他的一个特性 若子节点为i,则父节点为(i-1)/2,注意c++特性,该结果肯定是个整数. 若父节点为j,则子节点必为2*j+1;则在数组里面可以非常方便的通过下 ...
- Activiti6系列(4)- 三个war包的数据源及密码修改
一.activiti-app修改数据源和密码 1.使用sublimetext工具打开tomcat,方便进行配置文件的修改. 找到被解压的war包,activiti-app/WEB-INF/classe ...
- Go中的日志及第三方日志包logrus
有别的语言使用基础的同学工作中都会接触到日志的使用,Go中自然也有log相关的实现.Go log模块主要提供了3类接口,分别是 "Print .Panic .Fatal ",对每一 ...
- java并发编程(七)----(JUC)ReadWriteLock
前面我们已经分析过JUC包里面的Lock锁,ReentrantLock锁和semaphore信号量机制.Lock锁实现了比synchronized更灵活的锁机制,Reentrantlock是Lock的 ...
- java并发编程(二)----创建并运行java线程
实现线程的两种方式 上一节我们了解了关于线程的一些基本知识,下面我们正式进入多线程的实现环节.实现线程常用的有两种方式,一种是继承Thread类,一种是实现Runnable接口.当然还有第三种方式,那 ...
- quick-cocos2dx在eclipse下的lua调试
文中大部分内容来自http://cn.quick-x.com/?p=253,绿色标记部分为修改部分. 配置编译环境的基本步骤: 安装 Visual Studio 2012 安装 Java SDK 安装 ...