博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
今天看见了一个有意思的题目-----请实现鼠标点击页面中的任意标签,alert该标签的名字...
阅读量:7250 次
发布时间:2019-06-29

本文共 2494 字,大约阅读时间需要 8 分钟。

RT----感觉这个题目蛮有意思的---开整。

我第一眼看到这个题目的时候就觉得简直so easy嘛,没什么挑战性啊,不就是给一个标签绑定一个事件,用this来搞掂就OK了么...........

结果我再仔细一看发现想的略简单.......

好吧,进入正题

我开始一直在想如何给页面上所有的元素绑定同一个事件纠结了不少时间,还百度了一下,不过没找到合适的答案,然后我就想貌似没有这种说法。然后我不知道怎么的就通过a标签想到了window和document对象。

然后给window绑定了事件,点击页面上任意位置都有反应了,如果不传参数的话打印的就是window和document对象,代码如下

window.οnclick=function(){

   alert(this);//这里的打印结果是[object Window]
}

 

document.οnclick=function(){

   alert(this);//这里是[object HTMLDocument]
}

然后我想到了用this不就能找到当前对象了么.....于是我就相当然的这样传参了。。。结果是果断报错

window.οnclick=function(this){

   alert(this);
};

这样不行我就改换了一下思路。换了一个形参名,结果打印出来一串貌似鼠标监听的东东[object MouseEvent],心里暗喜,这下貌似有戏了。

window.οnclick=function(obj){

     alert(obj);
};

document.οnclick=function(obj){

     alert(obj);
};

但是这样也看不出什么,于是果断的按下F12打开控制台。将alert改成了console.log()

然后首先进入我视线的是那个Video,而我当时点击的就是那个视频,然后就看见了toElement这个玩意...

MouseEvent {
dataTransfer: null, toElement: video, fromElement: null, y: 346, x: 306…}
  1. altKeyfalse
  2. bubblestrue
  3. button0
  4. cancelBubblefalse
  5. cancelabletrue
  6. charCode0
  7. clientX306
  8. clientY346
  9. clipboardDataundefined
  10. ctrlKeyfalse
  11. currentTargetnull
  12. dataTransfernull
  13. defaultPreventedfalse
  14. detail1
  15. eventPhase0
  16. fromElementnull
  17. keyCode0
  18. layerX306
  19. layerY742
  20. metaKeyfalse
  21. offsetX306
  22. offsetY742
  23. pageX306
  24. pageY1393
  25. pathNodeList[0]
  26. relatedTargetnull
  27. returnValuetrue
  28. screenX306
  29. screenY407
  30. shiftKeyfalse
  31. srcElementvideo
  32. targetvideo
  33. timeStamp1412860841531
  34. toElementvideo
  35. type"click"
  36. viewWindow
  37. webkitMovementX0
  38. webkitMovementY0
  39. which1
  40. x306
  41. y346
  42. __proto__MouseEvent

这下完全找到思路了,果断将代码写为

window.οnclick=function(obj){

     console.log(obj.toElement);

  alert(obj.toElement); 

};

然后输出结果如下图;

我当时以为这就算完了,结果貌似还是不行啊,我只需要video啊,所以我就在toElement下面找啊找,找到了tagName这个好东西..

于是代码又成为了

window.οnclick=function(obj){

  console.log(obj.toElement.tagName);
  alert(obj.toElement.tagName);
};

然后结果如下图

然后这事还没完,我又在mouseEvent里面找到了三种替代方法......请看如下代码,该段代码没有检测浏览器的兼容性问题,望大神帮忙参考参考,最后希望大神轻喷,这可是我很有成就感的一次尝试呀。

<script type="text/javascript">

      <!--点击页面上任意标签alert标签名字-->
      document.οnclick=function(obj){
      alert(obj.target.tagName);
     // obj.target/obj.srcElement/obj.toElement 得到的结果是整个元素标签并且包括里面的内容
     // nodeName、tagName显示的是大写标签名//localName显示的是小写的
     console.log(obj.target);
}

</script>

最后附上整个代码:

        
what the time
  • 1
  • 2
  • 3
  • 4
  • 5
ssss

sssss

 

转载于:https://www.cnblogs.com/Jayvenlee/p/4014537.html

你可能感兴趣的文章
/etc/X11/xorg.conf 文件被误改后进不了图形化界面
查看>>
Android 通过反射及AIDL获取双卡手机SIM卡相关信息,及注册监听
查看>>
shell批量新建文件及批量改名
查看>>
APP适配安卓手机刘海屏
查看>>
bind10 新版本发布(版本号bind10-devel-20120816)
查看>>
junit 参数化测试
查看>>
分区表维护
查看>>
听说iPhone X到货了,识别体验是不是科技感爆棚?
查看>>
windows server2012中创建密码重设盘
查看>>
openstack-icehouse部署中遇到的一些故障(小笔记)
查看>>
redhat 替换 yum
查看>>
Google决定用gLinux取代Goobuntu Linux操作系统
查看>>
《将博客搬至CSDN》
查看>>
TCP/IP和OSI参考模型
查看>>
python日志管理模块logging
查看>>
Android用Intent和Bundle传list
查看>>
MySQL count(*) 优化
查看>>
西城110/linux高级作业(12.26)
查看>>
负载产品性能测试——新建测试
查看>>
mongo学习记录
查看>>