浏览器调试:事件定位与源码查找

  作为前端人员,浏览器调试是必不可少的工作之一,甚至与页面制作一样重要,试想生产环境以及日常bug中出现的问题,无法重现问题进行调试或者不知道如何下手调试,将对工作产生很消极的影响;常用的调试浏览器是chrome和Firefox,自带的和一些安装的插件都可以进行日常页面调试;

  相关的浏览器调试技巧,前端人员基本上都多多少少知道一些,所以这里我也就不从简到复杂一个个列举了,有兴趣的小伙伴可以百度之相关的一些浏览器调试的常识(也许我以后会写也说不定),我今天说的如标题,主要是事件定位源码查找;什么意思那?比如有个场景1:在前端工作中,集团官网出了个脚本问题,老板/主管让你去解决,打开网站,恩 代码写的很牛逼,但不是我写的啊(我们是大自然的维修工,哪里有问题去哪里),之前的大神不在了等等诸多原因,这种场景太多了,很多是维护其他人员写的代码,那么就要进行问题(脚本)定位和分析,然后纠错优化改正之;场景2:浏览一些网站时,发现一些不错的效果,想研究下码码之,这也涉及到脚本定位的问题(脚本都找不到研究个毛);这个时候有同学会问,这个要找代码很麻烦吗?右键查看源代码,看看引用或者页面上的代码不就行了吗?但是如果这个网站比较大,或者结构乱不够优化那?什么意思,看图:

......

这是个简单的例子,有的网站引用的脚步非常多,而且名字起的你不知道是干嘛的,或者是引用一个mini&ugly后的代码,一个一个看源码?

  好吧前面说了这么多,还没到正题,如何进行事件定位与源码查找,js事件可以理解为触发了某个条件后发生的页面响应,js事件分为一般事件、页面事件、表单事件等,简单理解就是页面click、hover、load、submit、scroll等等这些代表的事件,我这里就以最好理解的页面click来说,其他事件一样可以延伸;现在页面有个事件,点击某处发生了一个特定的事件,这个事件如何绑定?大致有一下几种方式:

  1.元素直接绑定方法:<p onclick="addSome()"></p>

  2.通过id或样式绑定方法:$("#eleId").click(function(){}) or document.getElementById("eleId").click or $(".eleClass").click(function(){})

  3.查找元素绑定:$("#eleId span em p").click(function(){}) or $(".class span em p").click(function(){})

  4.通过监听绑定方法:$(document).on("click","#eleId",function(){}) or document.getElementById("eleId").addEventListener(function(){})

  第一二中应该是比较常用的绑定方式,第一种可以直接定位如何绑定的方法了,然后就是定位源码分析代码了,而下面的几种方式,需要借助这个元素的“标记”来定位,比如id、class或者是上级的id、class(这种比较少了,脚本效率不高),那么这个标记就成了查找绑定事件的关键,我们需要一个地方能全局搜索所有引用的脚步,下面是chrome的搜索,我使用的是版本 52.0.2743.116 m;如图我们就实操我的博客中的一个搜索按钮的功能,这个例子比较简单:

  先通过代码查看,发现这个按钮是写在input中的onclick的,取到方法名,下面进行查找;

如图所示找到sources,通过里面的search全局查找脚本,发现一处,点击显示源区域,然后就找到代码了,注意这里代码区是formatted过的,如果你是查找的是自家的代码,果断去看源码去,如果是网上的,呵呵,只能这样了;这种方式可以查找以上几种介绍过的类型做延伸,基本可以满足脚本查找问题定位了,可以多找些列子试下就熟了;

在Firefox中的查找如下:

  

  除了这种方式,chrome还提供一些插件可以定位事件,比如Visual Event,就是这个玩意了

如图进入页面后,点击右上角插件,对,就是那个黑眼睛,插件开始工作,会在页面上有绑定事件的地方显示出绑定的来源,比较方便,不过不能定位代码源,还是需要手动查找,如果还有其他更好用的插件,也请小伙伴们留言提示;

  差不多写到这里了,分析一些小技巧,希望能帮到你。

时间: 2024-10-13 10:21:06

浏览器调试:事件定位与源码查找的相关文章

Cocos2d-X3.0 刨根问底(七)----- 事件机制Event源码分析

这一章,我们来分析Cocos2d-x 事件机制相关的源码, 根据Cocos2d-x的工程目录,我们可以找到所有关于事件的源码都存在放在下图所示的目录中. 从这个event_dispatcher目录中的文件命名上分析 cocos2d-x与事件相关的类一共有四种, Event, EventListener,EventDispatcher, Touch分别为 事件,事件侦听器,事件分发器,触摸 我们先从Event类开始. 打开CCEvent.h文件 /** * Base class of all ki

Android View 事件分发机制 源码解析 (上)

一直想写事件分发机制的文章,不管咋样,也得自己研究下事件分发的源码,写出心得~ 首先我们先写个简单的例子来测试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个MyButton继承Button,然后把跟事件传播有关的方法进行复写,然后添加上日志~ MyButton [java] view plain copy package com.example.zhy_event03; import android.content.Context; import andr

XposedNoRebootModuleSample 不需要频繁重启调试的Xposed 模块源码例子

XposedNoRebootModuleSample(不需要频繁重启调试的Xposed 模块源码例子) Xposed Module Sample No Need To Reboot When Debug github:https://github.com/asiontang/XposedNoRebootModuleSample @Override public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPac

Android事件分发机制源码分析

小小感慨一下,做android有一段时间了,一直以来都是习惯整理笔记存到有道笔记上,没有写博客的习惯.以后逐步分类整理出来,也算"复习"一遍了 - _ - . android的事件分发相关的方法有三个: 1.public booleandispatchTouchEvent(MotionEvent ev) 2.public boolean onInterceptTouchEvent(MotionEvent ev) 3.public booleanonTouchEvent(MotionEv

Android View 事件分发机制源码详解(View篇)

前言 在Android View 事件分发机制源码详解(ViewGroup篇)一文中,主要对ViewGroup#dispatchTouchEvent的源码做了相应的解析,其中说到在ViewGroup把事件传递给子View的时候,会调用子View的dispatchTouchEvent,这时分两种情况,如果子View也是一个ViewGroup那么再执行同样的流程继续把事件分发下去,即调用ViewGroup#dispatchTouchEvent:如果子View只是单纯的一个View,那么调用的是Vie

手把手教你调试Entity Framework 6源码

0  摘要 本文讲述在Visual Studio 2013(VS 2013)下调试Entity Framework 6(EF 6)源码的配置过程.原则上,VS 2012也适用. 本码蚁之前打算编写<Entity Framework 6 源码调试与分析>系列博文,现因个人健康原因,需休息较长时间,不得不放弃这一计划.离开前,把调试EF源码的办法写成教程,希望对那些像我一样的新手有所帮助. 1  正文 软件环境 操作系统: Windows 8.1 Update 1 IDE      : Visua

使用eclipse调试android的framework源码

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=325492 这篇文章中的第3和第4章分别介绍了java和c/cpp代码的调试,调试可以大大减少log查看花费的工作量. (1)调试java代码已经验证过了,主要是在eclipse中建立一个相同package名的安卓应用工程, 工程目录中导入源码,并在java窗口打开:在DDMS中去指定要调试的thread,在Debug窗口打开源码设置断点: 如果目录结构能同包名,则可以直接调试 如果目

Android查缺补漏(View篇)--事件分发机制源码分析

在上一篇博文中分析了事件分发的流程及规则,本篇会从源码的角度更进一步理解事件分发机制的原理,如果对事件分发规则还不太清楚的童鞋,建议先看一下上一篇博文 <Android查缺补漏(View篇)--事件分发机制> ,先来看一下本篇的分析思路,一会儿会按照事件传递的顺序,针对以下几点进行源码分析: Activity对点击事件的分发过程 PhoneWindow是如何处理点击事件的 顶级View对点击事件的分发过程 View对点击事件的处理过程 Activity对点击事件的分发过程 通过上一篇博文中我们

如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)

1 前言 这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境.如果有经验的小伙伴们可以略过此篇文章. 2 环境安装要求 IntelliJ IDEA JDK1.8 Maven3.5以上 3 从github上将SpringBoot源码项目下载下来 首先提供SpringBoot2.1.0的github地址: https://github.com/spring-projects/spring-boot/tree/v2.1.0.RELEASE 因为要进行阅读源码