IE下的DHTML有各种M$的私有特征,已经是众所周知。其中有个比较有趣就是:event.screenX和event.screenY,可以获得系统级别的鼠标位置坐标。

  咋一听,其实也觉得没什么。屏幕上的坐标无非就是:浏览器客户区域里的坐标 + 浏览器窗口坐标 + 客户区偏移,仅此而已。

  IE本身就可以通过event和screen对象得到各种屏幕和窗体位置有关的信息。

  然而,真正诡异的事还没开始!按照标准的DOM模型定义,只有在触发某个事件的时候,才能从event中获得与该事件相关的参数。

  也就是说,只有触发mousemove,等这类mouseXXX鼠标事件时,才有权获取和鼠标有关的参数。然而,在万恶的IE下,任何事件触发后,都能获取event.screenX和event.screenY,甚至在页面最小化时!

  当然,你可能会说这还是需要依赖一个事件。然而,这里的事件可以是任意的onxxx这类回调函数,并非局限于UI事件。于是,我们可以人为的制造它!

  最简单的例子,给一个new Image设置一个无效的src,它的onerror事件立马就触发了!

  于是我们可以在onerror里获取event.screenX,然后继续设置无效的src,再次触发onerror。。。于是我们就可以实时跟踪用户屏幕级别的鼠标指针了。因为onerror的产生不限于任何UI消息,因此页面最小化或非活动状态下,事件仍然能够触发!

  测试地址:http://www.etherdream.com/FunnyScript/CursorPosTest.html

  至于能不能获取鼠标或键盘哪个键被按下,很不幸,真的不可以。如果捕捉全局按键,哪岂不是可以监听密码输入了。。。

  事实上,onerror这类非UI事件的触发,根本就没有任何鼠标或键盘参数传入浏览器窗体,所以也就无法获取各种鼠标键盘信息。至于event.screenX,唯一的解释估计它是event的一个Getter,内部直接调用了GetCursorPos这个Win API,并非事件的触发者提供了这属性。

  如果某个页面植入了这样的跟踪代码,然后将坐标位置通过socket.io实时传送回来,岂不是很有趣。。。

IE下的一个安全BUG —— 可实时跟踪系统鼠标位置相关推荐

  1. 超强实时跟踪系统PP-Tracking学习记录

    PP-Tracting学习记录 超强实时跟踪系统PP-Tracking:飞桨AI Studio - 人工智能学习实训社区 (baidu.com) 目标检测 多目标跟踪 仅检测当前帧 物体的id信息可以 ...

  2. 利用计算机实现音乐节拍的实时自动跟踪,音乐节拍实时跟踪系统的研究及应用...

    摘要: 随着计算机技术的发展,计算机的应用不断渗入人们生产生活的各个方面.音乐作为一种表达人们思想感情.反映现实生活的不可缺少的一门艺术,已越来越受到计算机学者们的关注.将计算机应用于音乐领域,能够极 ...

  3. 询问一下大神,微信电脑版打开一个文章,页面显示不全,鼠标位置和文字上实际位置不一致,造成想复制文章内容很不方便,已经试过重启电脑、改变屏幕分辨率、重新安装微信的方法,都不能解决,求大神指点。

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  4. 企业级别应用--rsync远程同步(配置 rsync 备份源、rsync 下行和上行、inotify+rsync 实时备份)

    文章目录 一.配置 rsync 源服务器 1.1 rsync简介 1.2 rsync特点 1.3 配置 rsync 同步源 1.4 测试rsync功能 下行同步的三种方式 二.inotify+rsyn ...

  5. Dapper--Google生产环境下的分布式跟踪系统

    Dapper--Google生产环境下的分布式跟踪系统 概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发 ...

  6. 使用 Kafka 和 Spark Streaming 构建实时数据处理系统

    使用 Kafka 和 Spark Streaming 构建实时数据处理系统  来源:https://www.ibm.com/developerworks,这篇文章转载自微信里文章,正好解决了我项目中的 ...

  7. 实战 | 基于OpenCV的停车场空余车位实时监测系统(详细步骤 + 源码)

    导  读 本文主要介绍如何使用Python和OpenCV实现一个停车场空余车位实时监测系统,并包含详细步骤和源码. 背景介绍 介绍实现步骤之前,先来看看测试视频(小型停车场实时监控画面): ,时长00 ...

  8. 如何在完全不懂服务器开发的情况下做一个实时联网对战的微信小游戏

    微信小游戏即将开放?有我们在,你还赶得上! 根据微信官方对外公开的消息,微信小游戏的脚步越来越接近了.它的开发者资格门槛和使用者门槛都很低,以后必将引爆一波"全民开发小游戏"浪潮. ...

  9. 如何从头到脚彻底解决一个MySQL Bug

    摘要:为了保障华为云GaussDB产品的可靠性,每一款产品发布前都要通过多轮严苛的测试用例. 说明:本文中的MySQL,如果不做特殊说明,指的是开源社区版MySQL. 华为云数据库新版本在发布之前,会 ...

最新文章

  1. 标准差 标准误 偏度系数和峰度系数的作用
  2. Linux yum包管理工具常用命令示例
  3. 【学习笔记】第五章 python3核心技术与实践--字典和集合
  4. ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...
  5. Java编程:矩阵网格类算法问题做DFS
  6. c++复习——侯捷版
  7. 微信小程序实现圆形菜单弹出选中动画
  8. 阿里云添加DNS API 的accesskey
  9. Think Pad E570重装Win10系统没有外放喇叭声音
  10. 每日单词20110603
  11. c语言中怎么使用float,float在c语言中怎么用
  12. json数据和字符串json数据相互转换
  13. 我胡汉三回来了!!!
  14. yjp-9.5.6使用
  15. 各家邮箱容量是多少?哪家邮箱容量最大?
  16. 大学生一定要理解的15件事
  17. 大厂总结的前200页Java面试题都在这里了
  18. 2023年深圳/东莞/惠州CPDA数据分析师认证报名入口
  19. 计算机考研专业难度排名,计算机考研难度排行榜!真真不容易
  20. ROS2与C++入门教程-创建服务(srv)文件 - 创客智造

热门文章

  1. oracle 12 if,Oracle 12.1 RAC 系列 – 配置第二个网络和相应的SCAN2
  2. 计算机窗口移动方法有,北京版一年级信息技术上册《操作窗口学本领》教案
  3. linux监控任务跑满,Linux服务器带宽和CPU跑满或跑高排查
  4. 一个简单示例 利用jawin完成调用window中dll的调用
  5. Java实训项目13:GUI学生信息管理系统 - 实现步骤 - 创建应用程序类
  6. Java Web学习笔记03:JSP元素
  7. 【BZOJ2460】元素,线性基+贪心
  8. 三角学——极坐标_2
  9. 2017.10.16 水管局长水管局长数据加强版 思考记录
  10. 旋转卡壳 背诵用模板