In computer graphics programming, hit-testing (hit detection, picking, or pick correlation) is the process of determining whether a user-controlled cursor (such as a mouse cursor or touch-point on a touch-screen interface) intersects a given graphical object (such as a shape, line, or curve) drawn on the screen.Hit-testing may be performed on the movement or activation

举个例子,在大家看来,点击一个HTML的<a>标签链接打开一个新页面,看起来非常理所当然的一件事情,在WebKit内核里面,却做了非常多的事情,首先,要获取当前点击的位置,带着这个位置坐标信息,去做一个HitTest。所谓的HitTest就是探测下当前的点击的内容是什么,怎么才能知道当前点击的是什么呢?HitTest会遍历整个DomTree, LayerTree,看看当前的坐标位置是什么内容,是空白?还是文字?还是图片,还是链接?这些信息都可以通过遍历DomTree, LayerTree来实现,最终将遍历的探测结果以HitTestResult的形式返回,最终通过返回的类型来判断,如果是一个链接,则回调对应的回调函数,最终实现通过点击打开一个新的页面。

作者:三旬叔

链接:https://www.zhihu.com/question/22799206/answer/148330651

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. java统计字符串单词的个数
  2. jQuery静态方法noConflict的使用和源码分析
  3. 使用 PowerDesigner 和 PDMReader 逆向生成 MySQL 数据字典
  4. 一个书店管理系统java
  5. poj2369 Permutations ——置换群
  6. bzoj2789
  7. HTML中常用鼠标样式
  8. Activiti+oracle 启动项目时不能自动建表或更新表的问题分析及解决办法
  9. [cocos2d-x] 让精灵响应触摸 并把方向旋转到相对应的角度
  10. web压缩gzip响应
  11. WORD 无格式粘贴 2003 2007 MacOS2011
  12. (译)UEFI 启动:实际工作原理
  13. Flume-ng源码解析之Channel组件
  14. 去掉标题栏的方法(使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效)
  15. sublime text 3双击选择无法选择$符号
  16. Nginx 反向代理接收用户包体方式
  17. 面向对象—的__new__()方法详解
  18. Jenkins持续集成之小试牛刀
  19. curl 抓取图片
  20. thymeleaf 的内置对象

热门文章

  1. jQuery-对列表的操作
  2. MES系统实施4大关键点,您都知道吗?
  3. nrm : 无法加载文件 C:\Users\TANG\AppData\Roaming\npm\nrm.ps1,因为在此系统上禁止运行脚本。
  4. 7、Topic
  5. 网络远程唤醒 WOL Magic Packet【转】
  6. Java并发--Java中的CAS操作和实现原理
  7. react知识点
  8. APPIUM 常用API介绍(3)
  9. Linux环境下sudo切换用户后执行其他命令
  10. zz目标检测