阅读更多

3顶
0踩

Web前端
由于浏览器嗅探器不完全可靠,所以我们需要一种更好的方式来检测事件。

Kangax有一个非常好的文章,主题是如何在浏览器中支持事件的检测,他进行了深入的研究,最终得到了一个不错的通用解决方案:

var isEventSupported = (function(){
    var TAGNAMES = {
      'select':'input','change':'input',
      'submit':'form','reset':'form',
      'error':'img','load':'img','abort':'img'
    }
    function isEventSupported(eventName) {
      var el = document.createElement(TAGNAMES[eventName] || 'div');
      eventName = 'on' + eventName;
      var isSupported = (eventName in el);
      if (!isSupported) {
        el.setAttribute(eventName, 'return;');
        isSupported = typeof el[eventName] == 'function';
      }
      el = null;
      return isSupported;
    }
    return isEventSupported;
  })();

他提供了一个简单的测试案例,您可以对其进行点评。
来自: ajaxian
3
0
评论 共 1 条 请登录后发表评论
1 楼 hax 2009-04-08 09:09
俺始终认为,browser sniffing一定程度上始终是必要的。
因为证实支持某个特性,并不代表这个特性被正确的实现了。实际上你还是要处理特定于浏览器的bug。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • javascript事件特性检测代替浏览器嗅探

    事件特性检测: 1 标准浏览器,包括ie,判断指定的元素是否存在 "on" + event 属性. 2 在firefox 下,上述办法不适用,解决办法为: 创建div对象,给div元素添加指定的属性,属性名为 "on" + event,之后判断添加...

  • 细说浏览器特性检测(2)-通用事件检测

    在上一篇中介绍了jQuery1.4版本新增的几个浏览器特性检测方案和具体的目的,本文将以事件为中心,介绍一个较为完整、通用的事件检测方案。 事件检测,即检测某一事件在不同的浏览器中是否存在(可用),这在编写...

  • snort 检测nmap_Snort入侵检测系统安装与配置

    第1章Snort简介第2章软件列表第3章Snort 安装与配置第4章Snort的操作与使用第5章常见问题与解决方法第1章Snort简介Snort是一个免费的IDS(入侵监测系统)软件。它的一些源代码是从著名的tcpdump软件发展而来的。它是一...

  • snort 检测nmap_Snort***检测系统安装与配置

    第1章 Snort简介第2章 软件列表第3章 Snort 安装与配置第4章 Snort的操作与使用第5章 常见问题与解决方法第1章 Snort简介Snort是一个免费的IDS(***监测系统)软件。它的一些源代码是从著名的tcpdump软件发展而来的。...

  • 什么是网络安全?

    网络安全:分组嗅探可以帮助检测和分析网络中的恶意活动、攻击行为或潜在的安全漏洞,从而提供安全事件响应和防御。 协议分析:通过捕获和分析数据包,可以深入了解网络中使用的各种协议的工作原理和特征,以优化...

  • 事件嗅探技术

    给浏览器绑定事件的兼容性很...而opera不支持contextmenu以及input相关的onbeforepaste, onbeforecut等. 比如我们要绑定鼠标滚轮事件.那么通过浏览器嗅觉的方法.会是以下的伪代码: if(co.browser.ie) { Even...

  • 使用jQuery获取视口大小

    编辑:关于第2部分,“附加提示,请注意”:@Machiel,在昨天的评论(2014-09-04)中,是完全正确的:$的检查不能在Jquery的准备事件中,因为正如他所指出的,我们正在假设已定义$。 THANKS FOR POINTING THAT OUT,...

  • 使用这些 HTTP 头保护 Web 应用

    由于这些潜在的灾难性后果,HPKP 的使用率一直非常低,并且出现了由于错误配置导致大型网站无法访问的事件。综上所述,Chrome 认为没有 HPKP提 供的保护,用户会过得更好——安全研究人员并不完全反对这一决定。 ...

  • Ettercap使用记录之二

    很重要的一点是,基于Arp欺骗的sniffing不需要把执行Ettercap的主机的网卡设置为全收方式,并且支持后台执行。  在Text模式下,Ettercap启动参数为-T,通常与之配套的参数有-q代表安静模式,表示不会显示抓到...

  • 使用BHO技术检测IE在浏览网页时下载到IE cache中的文件

    关于BHO的使用介绍,可以参见 (1)Building Browser Helper Objects with Visual Studio 2005 链接地址:http://msdn.microsoft.com/en-us/library/bb250489.aspx (2)Browser Helper Objects: The Browser the ...

  • SitePoint播客#95:与Paul Irish不可同日而语

    那么正确的处理方法就是要使用某种代码技巧,或者理想情况下使用JavaScript功能,您实际上可以直接问JavaScript在使用它之前是否存在这种东西,我们告诉人们这样做不是说,哦,检测到特定的浏览器版本m使用,然后...

  • 如何利用OutLook漏洞编写病毒脚本

    如何利用OutLook漏洞编写病毒脚本 http://www.tongyi.net  出处:网络    点击:6189   如何利用OutLook漏洞编写病毒脚本 原创:coolweis(coolweis) 来源:coolweis                    如何利用OutLook漏洞编写蠕虫病毒                                        

  • 用VB设计VCD播放器

    用VB设计VCD播放器 http://www.tongyi.net    点击:660     当你在用老牌的XingPlay或是华丽的《超级解霸5.0》的时候,你有没有想过拥有一个你自己编写的软解压播放器呢?其实你只要掌握一点VB的技巧,那么要实现这个愿望就变得很简单了。   笔者在初步研究了Windows的SYSTEM.INI后发现,通过VB的多媒体控件MCI.VBX可以打开MPE

  • 用Delphi 控制窗体的大小

    用Delphi 控制窗体的大小 http://www.tongyi.net  出处:中国电脑教育报    点击:735      在我们使用的软件中,有些窗口在极大化时只占屏幕的一小部分,那么它是如何实现的呢!请看下面的例子:   1、在FORM私有声明部分加上如下一行程序:   procedure WMGetMaxInfo( var Message:TWMGetMinMaxInfo)

  • 如何在VC++中使用注册表

     如何在VC++中使用注册表    如今修改注册表成为继超频之后的又一大热点,许多CFAN通过对注册表的修改使Win98显得更加个性化,诸多报刊杂志也纷纷扯起注册表这面旗帜,令人遗憾的是,在介绍注册表修改的众多的文章中,大都以手工修改为例,极少数文章也只介绍有关修改注册表软件的用法,至于如何在程序中实现却无人提及。为此我在Visual Studio6.0帮助文件中用Registry

  • 用VB为软件增加注册功能

    用VB为软件增加注册功能 http://www.tongyi.net  作者:郭瑞刚   出处:china.com    点击:459   在尊重软件著作权的时代,电子注册版软件的应用也越来越广。它的出现使用户对程序中未受限制的功能有了一定了解,起到了推广和传播作用,同时也很好地保护了制作人的切身利益。那么,我们如何制作一个电子注册版软件呢?   经过摸索,笔者利用VB也简单地制作了一

  • 在VC中修改显示器的分辩率和色彩

     在VC中修改显示器的分辩率和色彩   在日常的程序开发中,有时我们想让自己编写的程序运行在显示器一定的分辨率和色彩数目下。如何让程序自动修改当前的显示器设置呢?这首先得从显示器的工作原理谈起。  一、相关原理  我们知道,显示器所显示的内容对应于显存,在显示器上最小的单位是象素(Pixel,这里仅考虑逻辑象素),显存的最小的单位是位(Bits)。 显示器工作的特征主要体现在色彩数

  • 用VB6.0编写电脑抽奖程序

     用VB6.0编写电脑抽奖程序    近年来在娱乐节目之中常常见到利用电脑来抽奖,笔者对其发生了兴趣遂自己动手用VB编了一个小程序来实现电脑抽奖的小功能,其原理如下:  主要利用VB中的Rnd函数,来实现随机查找和打乱排序的功能,从而实现随机抽奖的目的。Rnd函数的语法结构是Rnd[(number)],可选的number参数是 single或任何有效的数值表达式。Rnd函数返回小于

Global site tag (gtag.js) - Google Analytics