JavaScript Event学习第二章 Event浏览器兼容性

在这里提出的事件,当他们发生在一个确定的HTML元素上的时候,他们的名字能够被大多数的浏览器所识别。也就是说,浏览器会查找你为这个HTML元素所注册的事件处理程序的脚本,而且会被立即执行。
      一开始只有为数很少的一些事件。这些事件在几乎所有的JavaScript浏览器都能运行,即使是那些非常古老的。需要注意的是那些早期的事件只能工作在链接或者表单上,有时候也能运行在整个窗口上,但是其他的大多数HTML元素不行。
      时代变迁,很多新的事件也给大家介绍过了。第四代浏览器和更高级的浏览器允许事件注册在任何的HTML元素上。
      所以你基本上可以在任何元素上绑定任何事件,虽然在<P>上绑定一个keydown没有什么意义。
      在这里查看完整的浏览器事件兼容性列表。

界面事件(Interface events)

      界面事件不是被用户动作触发的,而是被用户行为结果触发。
      用户在任何元素上单击都会触发一个click时间。当点击发生在有特殊含义的元素上的时候,额外的界面事件就会被触发。
      例如,当用户在一个链接上单击就触发了click时间。单击这个链接一个新的页面就会被装载,所以这个特殊的click事件导致了界面事件unload的触发。
      其他的界面事件还有resize,scroll和focus/blur。

鼠标事件(mouse events)

      从Netscape 2开始,所有的浏览器都注意到了这样两个事实。当鼠标划入一个链接区域,那么mouseover事件就触发了。当他点击了这个链接那么click事件触发。不久之后mouseout也被添加了进去,他会在鼠标离开链接区域的时候触发。因此传统的鼠标事件三合会(Traditional Triad)成立了。
      第三代的浏览器对于鼠标事件进行了一些扩充。dbclick添加了进来,click事件分割成了mousedown和mouseup:用户按下和弹起鼠标按键。最后跟踪鼠
标轨迹的mousemove也变成了可能
      在后面的章节会详细讲解鼠标事件(mouse event)。

表单事件(Form events)

      表单能够识别submit和reset事件,submit在用户提交表单的时候触发reset在重置表单的时候触发。其中submit事件是所有表单验证代码的核心。当用户提交表单的时候,就遍历一遍表单检查是否有不正确的数据。如果发现了一个错误,停止提交表单并向用户发出一个警告。
      表单还能在某一项得到或者失去焦点的时候识别focus和blur事件,还有键盘事件和click事件。可以查看其他的兼容性列表。
      一般情况下使用这些事件的时候要小心。当用户离开表单中的某一项的时候完全可以用onblur来验证数据,但是通常这都很烦人。用户在忙着填表单的时候不想看见任何弹出来的提示。

W3C事件(W3C events)

      在W3C的DOM 2 事件规范中  还定义了一些突发事件(Mutation events)。这些事件在文档的DOM结构发生变化的时候触发。最常见的一个就是DOMSubtreeModified事件,它会在DOM发生变化的时候触发。
      Mozilla将这个事件设置为subtreemodified。Mozilla也不支持其他的我们没有提到的w3c事件。

微软事件(Microsoft events)

      微软创造了一大堆事件。有一些是非常有趣的。
      当用户在任何时候单击鼠标右键的时候就会触发comtextmenu事件。这非常有用以致滥用。Mozilla也支持这个事件。
      当导入XML文件的时候,readystatechange事件就像一些load事件一样提供服务。当XML文档的readyState变成4的时候,文档就加载完毕了。(不要问我什么是readyState,他管用而且够用)
      让人惊奇的是在unload事件发生之前还有beforeunload事件。他设计的目的是用来取消关闭页面,但是确没人在乎。
      最后微软还发明了mouseenter和mouseleave事件,这两个几乎和mouseover合mouseout事件一样。在鼠标事件一章查看。
      当然以上事件只被IE支持。

Mozilla事件(Mozilla events)

      Mozilla,当然也有一大堆自己的事件。我还没有仔细的研究。

事件处理程序

      所有的事件无论何时触发都会被浏览器检测到。浏览器通常也会执行默认的程序,就像当用户点击一个链接的时候。但是有时候什么也不会发生。

事件处理程序的重点在于你可以让其他事情发生。你可以在事件发生的时候让浏览器执行你的脚本。如果你这样写了那么无论何时只要事件发生那么你的脚本就会执行。如果这些脚本在符合逻辑的基础上能非常的有用,那么你的用户也会非常的愉快。

为了确保你的脚本在事件触发的时候能够执行,你需要对HTML元素的确定的动作进行事件注册,就像下面这样:

<a href="somewhere.html" onClick="alert('I\'ve been clicked!')">

      这样脚本里的alert('I\'ve been clicked!')就会在click事件发生的时候执行。这就注册了一个事件处理程序。


继续

如果你要继续学习,那么请看下一章。

(0)

相关推荐

  • 多浏览器兼容性比较好的复制到剪贴板的js代码

    对于非ie浏览器他是用flash来实现的,js代码如下: 复制代码 代码如下: <script type="text/javascript"> function copy_code(copyText) { if (window.clipboardData) { window.clipboardData.setData("Text", copyText) } else { var flashcopier = 'flashcopier'; if(!docum

  • css与javascript跨浏览器兼容性总结

    本文以大量实例形式总结了css与javascript跨浏览器的兼容性问题.分享给大家供大家参考.具体总结如下: 一.CSS样式兼容性 1. FLOAT闭合(clearing float) 网页在某些浏览器上显示错位很多时候都是因为使用了float浮动而没有真正闭合,这也是div无法自适应高度的一个原因.如果父div没有设float而其子div却设了float的话,父div无法包住整个子DIV,这种情况一般出现在一个父DIV下包含多个子DIV.解决办法: 1) 给父DIV也设上float 2) 在

  • javascript中日期函数new Date()的浏览器兼容性问题

    同一种语言javascript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是支持的语言标准和实现上各有差异.本文将基于new Date来创建Date对象来分析这个问题. 1.  问题的提出, 开始时间和结束时间空间无法正确的传递值 在页面中,我们使用了一个时间上的组件来开发时间选择框,但是发现在Firefox下是无法正常工作的,在Chrome下是可以正常运行的. 问题出在哪里呢? 2.  问题分析 结果分析发现是由于如下代码产生的问题: var timestart = '20

  • JavaScript 浏览器兼容性总结及常用浏览器兼容性分析

    本文是我们小编日常整理些关于js兼容性问题,及IE与Firefox等常用浏览器的兼容性分析,对js浏览器兼容性相关知识感兴趣的朋友一起学习吧! 1. children与childNodes IE提供的children.childNodes和firefox下的childNodes的行为是有区别的,firefox下childNodes会把换行和空白字符都算作父节点的子节点,而IE的childNodes和children不会.比如: <div id="dd"> <div&g

  • JavaScript中解决多浏览器兼容性23个问题的快速解决方法

    一.document.formName.item("itemName") 问题 问题说明:IE下,可以使用 document.formName.item("itemName") 或 document.formName.elements ["elementName"]:Firefox 下,只能使用document.formName.elements["elementName"]. 解决方法:统一使用document.formNa

  • 测试IE浏览器对JavaScript的AngularJS的兼容性

    短版本 为确保Angular应用在IE上能够工作请确认: 1. 在IE7或更早的版本上polyfill JSON.stringify.你可以使用JSON2或JSON3来polyfills. <!doctype html> <html xmlns:ng="http://angularjs.org"> <head> <!--[if lte IE 7]> <script src="/path/to/json2.js"&

  • Javascript 多浏览器兼容性问题及解决方案

    CSS 多浏览器兼容性问题及解决方案一.document.formName.item("itemName") 问题 问题说明:IE下,可以使用 document.formName.item("itemName") 或 document.formName.elements ["elementName"]:Firefox 下,只能使用document.formName.elements["elementName"]. 解决方法:统

  • JavaScript Event学习第二章 Event浏览器兼容性

    在这里提出的事件,当他们发生在一个确定的HTML元素上的时候,他们的名字能够被大多数的浏览器所识别.也就是说,浏览器会查找你为这个HTML元素所注册的事件处理程序的脚本,而且会被立即执行.      一开始只有为数很少的一些事件.这些事件在几乎所有的JavaScript浏览器都能运行,即使是那些非常古老的.需要注意的是那些早期的事件只能工作在链接或者表单上,有时候也能运行在整个窗口上,但是其他的大多数HTML元素不行.      时代变迁,很多新的事件也给大家介绍过了.第四代浏览器和更高级的浏览

  • JavaScript DOM 学习第二章 编辑文本

    例子 这个页面就是个例子.点击一个段落,编辑,然后点Ready.你的修改就会呈现. 问题 遇到的第一个问题是:我想用文本框作为编辑区域.一开始我却把内容放不进文本框去.读者发现Mozilla的一个警告说是只有在文本框放置到文档之后才能设置它的value. 另外,在Mozilla下面内容包装的不是很好.我试了好几种wrap参数,但是结果都不是很好. 最严重的问题就是把修改后的内容发回服务器,这是几乎所有的CMS系统都要做的.读者给了我很多高明巧妙的建议.然而因为不能通过JavaScript完成,所

  • JavaScript Event事件学习第一章 Event介绍

    没有event就没有脚本.可以看看任何有JavaScript代码的网页:几乎所有的例子都有一个事件触发了脚本.原因非常简单.JavaScript就是给你的页面添加内部活动:用户做一些事情然后页面做出回应. 因此JavaScript就需要一个方法能够检测到用户的动作然后才能知道什么时候做出反应.这还需要知道那个函数会被执行,函数会做一些你认为的给你的网页增色的动作.这些文字描述了如何去写这样的脚本.虽然不容易,但是这是一个很让人满足的工作. 当用户做了什么事情event就发生了,当然还有一些eve

  • JavaScript Event学习第九章 鼠标事件

    先看看都有哪些鼠标事件:mousedown,mouseup_and_click,dblclick,mousemove和mouseover mouseout.然后还会解释一下relatedTarget,fromElement和toElement这些事件属性.最后是微软的mouseenter和mouseleave事件. 浏览器的兼容性问题,可以在浏览器兼容性列表查看. 例子 这里有一个例子.可以帮助理解下面的内容. mousedown,mouseup,click和dblclick在这个链接上注册.可

  • JavaScript DOM学习第一章 W3C DOM简介

    在这一章我主要介绍已经被新一代的浏览器所支持的W3C 第一级的DOM.对他的运作做一个大概的了解并且让你知道你可以对他们做什么. 首先是对于DOM的一些建议和DOM设计的目的,然后我会告诉你什么是节点(nodes)并且怎样通过DOM树来遍历节点.接着是如何得到一个特定的节点,以及怎样改变他的值和属性.最后就是DOM的终极目标:怎么创建一个自己的新节点. 建议 Level 1DOM是W3C制定的用来提供给任何程序语言来访问XML文档的.不管你用什么语言程序来处理XML文档,只要是Level 1DO

  • JavaScript DOM 学习第九章 选取范围的介绍

    虽然我们会讲解用程序创建范围对象,但是我们把精力主要集中在如何将用户的选取范围转换成为W3C 范围或者微软的文档范围对象. 什么是范围 范围是指HTML文档中的任意一部分内容.一个范围的开始和结束点都可以是随意的,甚至是相同的(一个空范围).最常见的范围就是用户选取的文本.当用户在页面上选取了一部分,你就可以他的选取部分转换为范围对象.然而,你也可以让程序自动选择范围. 让我们以下面的代码为例.假设用户选择了下面的文字: <h4 id="entry1196"><a h

  • JavaScript CSS修改学习第二章 样式

    另外,有时候你也许想知道添加到一个元素或者链接上的样式的具体内容.而style属性只能读取元素的内联形式的样式,所以如果你想读取其他样式就得另想办法了. 偏移 在使用一些小技巧之前,IE和Mozilla已经添加了一个比较好的办法:offsetSomething.使用这些属性你就能够读取这个段落现在的一些比较重要的样式. 举个例子,使用offsetWidth.你就能知道这个段落现在的宽度的像素值.为了测试,你可以改变一下窗口的大小然后再运行一下. 代码也非常的简单: 复制代码 代码如下: func

  • JavaScript 中级笔记 第二章

    1,引用 引用是一个指向对象实际位置的指针.看下面的使用引用的例子: /*示例引用*/ var obj = new Object(); //定义一个空对象 var newObj = obj; //定义一个新对象引用. obj.name = "rain";//修改原对象的属性 alert( newObj.name ); alert( obj.name == newObj.name );//由此可以证明它们是引用的同一个对象 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 本例

  • Javascript入门学习第二篇 js类型第1/2页

    1,对象跟基本类型之间的转换: 不管何时,只是对象非空,在布尔环境中都为true. 如; new Boolean(false);  new Number(0); new String(""); new Array(); 上面虽然内部值是false,但对象的值是true; Object ? valueOf() ? toString() 其中Date类,是先执行toString()转换. 2,js中操作一个数据值: 任何语言都有自己的操作数据的方法: Js也不例外,js有3种重要的方式来操

  • Javascript入门学习资料收集整理篇

    Javascript入门学习第一篇 js基础Javascript入门学习第二篇 js类型Javascript入门学习第三篇 js运算Javascript入门学习第四篇 js对象和数组Javascript入门学习第五篇 js函数Javascript入门学习第六篇 js DOM编程Javascript入门学习第七篇 js dom实例操作Javascript入门学习第八篇 js dom节点属性说明Javascript入门学习第九篇 Javascript DOM 总结jQuery基础教程笔记适合js新手

随机推荐