HTML5 除了定义了新的标记规则,还定义了一些JavaScript API。这些API 是为了让开发人员创建出更好的、能够与桌面应用媲美的用户界面而设计的。本章讨论了如下API。 跨文档消息传递API 能够让我们在不降低同源策略安全性的前提下,在来自不同域的文档间传递消息。 原生拖放功能让我们可以方便地指定某个元素可拖动,并在操作系统要放置时做出响应。还可以创建自定义的可拖动元素及放置目标。 新
HTML5 的<canvas>元素提供了一组JavaScript API,让我们可以动态地创建图形和图像。图形是在一个特定的上下文中创建的,而上下文对象目前有两种。第一种是2D 上下文,可以执行原始的绘图操作,比如: 设置填充、描边颜色和模式 绘制矩形 绘制路径 绘制文本 创建渐变和模式 第二种是3D 上下文,即WebGL 上下文。WebGL 是从OpenGL ES 2.0 移植到浏览器中的,而O
虽然HTML 和Web 应用自诞生以来已经发生了天翻地覆的变化,但Web 表单相对却没有什么改变。使用JavaScript 可以增强已有的表单字段,从而创造出新的功能,或者提升表单的易用性。为此,表单、表单字段都引入了相应的属性和方法,以便JavaScript 使用。下面是本章介绍的几个概念。 可以使用一些标准或非标准的方法选择文本框中的全部或部分文本。 大多数浏览器都采用了Firefox 操作选
事件是将JavaScript 与网页联系在一起的主要方式。“DOM3 级事件”规范和HTML5 定义了常见的大多数事件。即使有规范定义了基本事件,但很多浏览器仍然在规范之外实现了自己的专有事件,从而为开发人员提供更多掌握用户交互的手段。有些专有事件与特定设备关联,例如移动Safari 中的orientationchange 事件就是特定关联iOS 设备的。 在使用事件时,需要考虑如下一些内存与性能
DOM2 级规范定义了一些模块,用于增强DOM1 级。“DOM2 级核心”为不同的DOM类型引入了一些与XML 命名空间有关的方法。这些变化只在使用XML 或XHTML 文档时才有用;对于HTML 文档没有实际意义。除了与XML 命名空间有关的方法外,“DOM2 级核心”还定义了以编程方式创建Document 实例的方法,也支持了创建DocumentType 对象。 “DOM2 级样式”模块主要针
虽然DOM 为与XML 及HTML 文档交互制定了一系列核心API,但仍然有几个规范对标准的DOM进行了扩展。这些扩展中有很多原来是浏览器专有的,但后来成为了事实标准,于是其他浏览器也都提供了相同的实现。本章介绍的三个这方面的规范如下。 Selectors API,定义了两个方法,让开发人员能够基于CSS 选择符从DOM中取得元素,这两个方法是querySelector()和querySelec
客户端检测是JavaScript 开发中最具争议的一个话题。由于浏览器间存在差别,通常需要根据不同浏览器的能力分别编写不同的代码。有不少客户端检测方法,但下列是最经常使用的。 能力检测:在编写代码之前先检测特定浏览器的能力。例如,脚本在调用某个函数之前,可能要先检测该函数是否存在。这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上。能力检测无法精
浏览器对象模型(BOM)以window 对象为依托,表示浏览器窗口以及页面可见区域。同时,window对象还是ECMAScript 中的Global 对象,因而所有全局变量和函数都是它的属性,且所有原生的构造函数及其他函数也都存在于它的命名空间下。本章讨论了下列BOM的组成部分。 在使用框架时,每个框架都有自己的window 对象以及所有原生构造函数及其他函数的副本。每个框架都保存在frames
在JavaScript 编程中,函数表达式是一种非常有用的技术。使用函数表达式可以无须对函数命名,从而实现动态编程。匿名函数,也称为拉姆达函数,是一种使用JavaScript 函数的强大方式。以下总结了函数表达式的特点。 函数表达式不同于函数声明。函数声明要求有名字,但函数表达式不需要。没有名字的函数表达式也叫做匿名函数。 在无法确定如何引用函数的情况下,递归函数就会变得比较复杂; 递归函数应该始
ECMAScript 支持面向对象(OO)编程,但不使用类或者接口。对象可以在代码执行过程中创建和增强,因此具有动态性而非严格定义的实体。在没有类的情况下,可以采用下列模式创建对象。 工厂模式,使用简单的函数创建对象,为对象添加属性和方法,然后返回对象。这个模式后来被构造函数模式所取代。 构造函数模式,可以创建自定义引用类型,可以像创建内置对象实例一样使用new 操作符。不过,构造函数模式也有缺点
对象在JavaScript 中被称为引用类型的值,而且有一些内置的引用类型可以用来创建特定的对象,现简要总结如下: 引用类型与传统面向对象程序设计中的类相似,但实现不同; Object 是一个基础类型,其他所有类型都从Object 继承了基本的行为; Array 类型是一组值的有序列表,同时还提供了操作和转换这些值的功能; Date 类型提供了有关日期和时间的信息,包括当前日期和时间以及相关的计算
JavaScript 变量可以用来保存两种类型的值:基本类型值和引用类型值。基本类型的值源自以下5种基本数据类型:Undefined、Null、Boolean、Number 和String。基本类型值和引用类型值具有以下特点: 基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中; 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本; 引用类型的值是对象,保存在堆内存中; 包含引
JavaScript 的核心语言特性在 ECMA-262 中是以名为 ECMAScript 的伪语言的形式来定义的。 ECMAScript 中包含了所有基本的语法、操作符、数据类型以及完成基本的计算任务所必需的对象,但没有对取得输入和产生输出的机制作出规定。理解 ECMAScript 及其纷繁复杂的各种细节,是理解其在Web 浏览器中的实现——JavaScript 的关键。目前大多数实现所遵循的都
JavaScript 是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: ECMAScript,由 ECMA-262 定义,提供核心语言功能; 文档对象模型(DOM),提供访问和操作网页内容的方法和接口; 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。 JavaScript 的这三个组成部分,在当前五个主要浏览器(IE、 Firefox、 Chrome、 Safari 和
5.1.8 小结 坐标变换在机器人系统中是一个极其重要的组成模块,在 ROS 中 TF2 组件是专门用于实现坐标变换的,TF2 实现具体内容又主要介绍了如下几部分: 1.静态坐标变换广播器,可以编码方式或调用内置功能包来实现(建议后者),适用于相对固定的坐标系关系 2.动态坐标变换广播器,以编码的方式广播坐标系之间的相对关系,适用于易变的坐标系关系 3.坐标变换监听器,用于监听广播器广播的坐标系消