菜鸟学前端——javascrip进阶

在学习了javascript基础后,需要了解一些javascript的高级技术,这样才能在变化多端的前端开发中游刃有余。

下面阐释一些常有的javascript高级技术。

一、事件

事件是javascript中最为摄人心魄的技术。因为了有了它的存在,用户不仅可以浏览网页内容,还可以与网页进行交互了,大大提高了用户体验。事件主要包括事件流、事件的监听、事件的类型以及浏览器兼容性问题等。

1.1 事件流

浏览器最初开始仅支持一个元素响应事件,但从IE4及Netscape(网景公司,后与IE对抗中惨败)4后开始,他们提出了时间流(Event flow)的概念。事件模型分为两种:捕获型、冒泡型

1.1.1 冒泡型

事件按照从特定的事件目标到最不特定的事件目标的顺序逐一击发的(一般都是从小到大,从元素到页面)。

下面看一个例子。

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>Test by WangYu--冒泡事件</title>

<script language="javascript">

function add(sContext)

{

var oDiv = document.getElementById("display");

oDiv.innerHTML += sContext;//依次输出单击元素

}

</script>

</head>

<body onclick="add(‘body<br>‘);">

<div class="myDiv" onclick="add(‘div<br>‘);">

<p me</p>

</div>

<div id="display"></div>

</body>

</html>

处理事件的依次顺序为:p -> div -> body

1.1.2 捕获型事件

捕获型事件(event capturing)与冒泡事件相反,即从不精确的对象到最精确的对象。如果设置了捕获型事件,前面的例子将正好相反。

1.2 事件监听

页面中的事件需要一个函数来响应,这类函数通常称之为事件处理函数,这些函数实时监听是否有事件发生(类似观察者模式,将在后期介绍),它们就被称为事件监听。

1.2.1 通用监听方法

直接在标签中加入函数,如<p onclick="add(‘p<br>‘);"></p>

也可以在函数中写入javascript语句,如<p clicke me‘)‘);"></p>

下面介绍一个常用的例子,实现事件监听。

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>Test by WangYu--冒泡事件</title>

<script language="javascript">

window.onload = function () {

var vOp = document.getElementById("myId");

vOp.onclick = function ()

{

alert("You click me");

}

}

</script>

</head>

<body>

<div>

<p id="myId">Click me</p>

</div>

</body>

</html>

1.2.2 IE中的监听方法

在IE中,每个元素都有两个方法来处理事件的监听,分别是attachEvent()和detachEvent(),分别实现添加事件处理函数和删除事件监听函数。

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>Test by WangYu--监听事件</title>

<script language="javascript">

function oneClick()

{

alert("oneClick click me");

}

function TwoClick() {

alert("TwoClick click me");

}

window.onload = function () {

vOp.onclick = function ()

{

var vOp = document.getElementById("myId");

vOp.attachEvent(" oneClick);

vOp.attachEvent(" TwoClick);

vOp.detachEvent(" oneClick);

}

}

</script>

</head>

<body>

<div>

<p id="myId">Click me</p>

</div>

</body>

</html>

1.2.3 标准DOM的监听方法

标准的DOM定义了两个方法来实现添加和删除监听函数,分别是addEventListener()和removeEventListener()。

下面仍以实例介绍:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>Test by WangYu--事件监听</title>

<script language="javascript">

function oneClick()

{

alert("oneClick click me");

vOp.removeEventListener("click", TwoClick, false);

}

function TwoClick() {

alert("TwoClick click me");

}

var vOp;

window.onload = function () {

var vOp = document.getElementById("myId");

vOp.addEventListener("click", oneClick,false);

vOp.addEventListener("click", TwoClick,false);

}

</script>

</head>

<body>

<div>

<p id="myId">Click me</p>

</div>

</body>

</html>

1.3 事件的类型

1.3.1 鼠标事件

常用的鼠标事件有click,dbclick,mousedown,mouseout,mouseover,mouseup,mousemove

1.3.2 键盘事件

常用的键盘事件有keydown,keypress,keyup

1.3.3 HTML事件

在HTML常用的事件有load,unload,error,select,change,submit,focus,blur

时间: 2024-10-06 03:46:47

菜鸟学前端——javascrip进阶的相关文章

菜鸟学前端--javascript基础

在学习过css相关的知识,有了前端工程师的一些基础知识.但要较好的掌握前端,必须要学习好javascript的知识. 下面将从基本语法.变量.关键字.保留字.语句.函数.BOM等角度阐释. 一.基本语法 javacript作为一种面向对象的.脚本级的轻量语言,与java一脉相承. 命名:区分大小写,弱类型定义(一般采用var,不限制类型). 行末分号可有可无(从经验上来看,推荐写,可以提高代码阅读质量). 括号用于代码段. 注释与C.java类型,单行用"//",段注释用"/

菜鸟学jQuery源码(前言)

前言 相信任何一名前端开发人员或者是前端爱好者都对jQuery不陌生.jQuery简单易用,功能强大,特别是拥有良好的浏览器兼容性,大大降低了前端开发的难度,使得前端开发变得“平易近人起来”.自从本人用了jQuery,顿时感觉到人生再也不是灰色的了,又能够快乐的工作了. 不过在每天码得飞起的同时,我也对jQuery充满好奇,所以也特意的去查了一下资料.现在网上和书店里面有非常多的资料对jQuery源码从各种角度进行解析,大多都是对jQuery进行总结.归纳从上往下的分析.不过本人作为一名刚毕业的

前端开发者进阶之ECMAScript新特性--Object.create

前端开发者进阶之ECMAScript新特性[一]--Object.create Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指定属性的对象 参数:prototype 必需.  要用作原型的对象. 可以为 null.descriptors 可选. 包含一个或多个属性描述符的 JavaScript 对象."数据属性"是可获取且可设置值的属性. 数据属性描述符包含 value 特性,以及 writable.enumerab

《跟菜鸟学Cisco UC部署实战》-视频课程-学习投资

有朋友,有学生,问到学习投资些什么,注意:投资可重复利用!就看你怎么用!!! 所以,我写下此博文,目的为了更方便学员学习! 一.在线培训(直播): 1. 学费: 8168元. (目前没开班,如果需要培训大纲,培训计划,请联系QQ:学无止境 3313395633 ) 2. 1条电话初装费 初装费:150元(大约)+31元/月,测试后可以,如果不用,请停机保号,停机保号:5元/月. 3. 1条宽带 默认大家都能上网,不用单独投资! 4. 语音网关 680元(老师为购买此组合,本课程中使用此组合! 一

菜鸟学jQuery源码(一)

整个jQuery是一个自调用的匿名函数: 1 (function(global, factory) { 2 if (typeof module === "object" && typeof module.exports === "object") { 3 module.exports = global.document ? 4 factory(global, true) : 5 function(w) { 6 if (!w.document) { 7

菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty

做WEB开发,测试是一件很费时间的事情.所以我们就应该用更简单.更快捷的方式进行测试.今天就向大家介绍一个轻量级的容器--jetty.j今天说的etty是Maven的一个插件jetty-maven-plugin,与Maven配合起来使用非常的方便,它的配置也非常的简单,下面我们就看看它怎么用吧! 在pom.xml 文件的<project>标签下加入如下代码: <build> <plugins> <plugin> <groupId>org.mort

菜鸟学SSH(十三)——Spring容器解析及简单实现

最近一段时间,"容器"两个字一直萦绕在我的耳边,甚至是吃饭.睡觉的时候都在我脑子里蹦来蹦去的.随着这些天一次次的交流.讨论,对于容器的理解也逐渐加深.理论上的东西终归要落实到实践,今天就借助Spring容器实现原理,简单说说吧. 简单的说,Spring就是通过工厂+反射将我们的bean放到它的容器中的,当我们想用某个bean的时候,只需要调用getBean("beanID")方法. 原理简单介绍: Spring容器的原理,其实就是通过解析xml文件,或取到用户配置的

《跟菜鸟学Cisco UC部署实战》-让您学了更菜

<跟菜鸟学Cisco UC部署实战> 链接:http://pan.baidu.com/s/1c25GQLq   密码:f4zu 咨询: Cisco 菜鸟:3313395633

菜鸟学Linux - 文件/文件夹的隐藏属性

文件/文件夹居然还有隐藏属性?没错,隐藏属性对于文件/文件夹的安全很重要.好比如说,我们需要使用”鉴定符“来揭开装备的隐藏属性:在Linux中chattr/lsattr就是“鉴定符”. chattr基本格式为:chattr +-=[acdeijstuADST] .+表示增加某种隐藏属性:-表示取出某种隐藏属性:=表示直接设置隐藏属性.man chattr可知: The letters ‘acdeijstuADST’ select the new attributes for the files: