Dreamweaver定制详解(6)

扩展 Dreamweaver:基本知识
  Dreamweaver 被设计成了一个可扩展的程序。它包括 JavaScript 编辑器,这样它就可以读取和执行 JavaScript 代码,它也提供了一个程序编程界面 (API),一大套 JavaScript 函数,这些函数允许开发者用来扩展 Dreamweaver 的性能。Dreamweaver 同时提供一个文档对象模型 (DOM),文档对象模型允许扩展项对文档结构和内容进行检查和修改。

  通过 JavaScript API (Application Programming Interface),你可以创建对象,行为 actions,命令,属性面板,浮动面板,和数据编译器,(所有这些被统称为扩展项)。

  你也可以在不用熟悉任何编程知识的情况下创建新的对象和简单的命令。但是对于许多的高级用途来讲,要想增强 Dreamweaver 的性能,你就必须编写扩展项,或者用 JavaScript,或者用 C。有关 DOM 和 API 的介绍,参阅 扩展 Dreamweaver。

JavaScript

  JavaScript 是一种解释性编程语言。如果想对 JavaScript 有多点了解,可以阅读有关的 JavaScript 书籍,如 JavaScript Bible (JavaScript 宝典),作者是 Danny Goodman (IDG 出版) 或者 JavaScript: The Definitive Guide,作者是 David Flanagan (O'Reilly 出版)。有关借助于 JavaScript 来扩展 Dreamweaver 的介绍,参阅 扩展 Dreamweaver。

  注意:尽管两者名字有相同之处,但 JavaScript 和 Java 是没有任何关系的。

编辑 Dreamweaver 命令

  在 Dreamweaver 菜单中的所有命令,包括你使用历史面板创建和保存的命令,都可以在 JavaScript 中执行。这个 JavaScript 代码通常多数都是由对 Dreamweaver 可扩展性 API 提供的函数的调用。如果你熟悉 JavaScript,了解 Dreamweaver 的扩展 API,就可以对 JavaScript 进行编辑,从而改变 Dreamweaver 命令的作用了。

  注意:除非你肯定自己的所作所为,否则就不要随便尝试修改任何的 JavaScript 代码。

  要想重新命名命令,将命令移到不同的菜单,或者想要将一个快捷键指向某一命令。

定制第三方标签的解释和外观
  服务器端的处理技术,如 ASP,PHP,ColdFusion,和 JSP 都需要在 HTML 文件中使用一些非 HTML 的代码;服务器就是基于这些非 HTML 代码来创建和处理 HTML 内容的。当 Dreamweaver 遇到非 HTML 标签的时候,它会将这些非 HTML 标签和自己附带的第三方标签文件进行比较,而这个第三放标签文件就定义了 Dreamweaver 如何读取和显示非 HTML 标签。

  举例来说,ASP (Active Server Pages) 文件中包含有供服务器进行解释的代码。这个代码被一对分隔符分开:它以字符串 <% 开始,以字符串 %> 结束。Dreamweaver 的 分配/ThirdPartyTags 文件夹中包含了一个名为 ASP.xml 的文件,这个文件是用来描述 ASP 代码的格式,定义 Dreamweaver 显示代码的方式的。由于 ASP 代码是在 ASP.xml 文件中指定的,Dreamweaver 是不会尝试解释前后分隔符之间的任何内容的。

  当然你可以定义自己的标签,创建一个标签数据库文件,定义 Dreamweaver 读取和显示这些自定义标签的方式。如果你正在使用的是一个服务器端的标识系统,而不是使用的 ASP,ColdFusion,或者 PHP,那么创建标签数据库文件是非常非常有用的;你可以为每一个这样的标识系统创建一个标签数据库文件,告诉 Dreamweaver 如何显示这些标签。

  注意:这一部分主要是解释如何在 Dreamweaver 中定义自定义标签的外观的,而不是讲解如何编辑一个自定义标签的属性内容的。要想了解有关如何创建一个属性面板来监视和修改自定义标签的属性的知识,参阅 Extending Dreamweaver 的 "Property Inspectors" 部分。

  每个标签数据库文件都需要定义标签的名字,类型,内容模式,外观配置,以及图标。你可以创建任意多的标签数据库文件,但所有这些文件都必须放在 分配/ThirdPartyTags 文件夹中,这样才能被 Dreamweaver 读取和处理。标签数据库文件的后缀是 .xml。

  如果你正在同时处理若干个相互无关的站点(比如说,你是一个自由的开发者),你可以将针对某一站点的所有的标签规范都放进一个文件中去。然后只要将数据库文件和自定义图标,以及属性面板都交给站点维护人员就可以了。

  举例说,你使用一个被称之为 TAGSPEC 的 XML 标签定义了一个标签规范,下边的代码就描述了 HAPPY 标签的规范:

<TAGSPEC TAG_NAME="happy" TAG_TYPE="nonempty" RENDER_CONTENTS="false"
CONTENT_MODEL="marker_model" ICON="happy.gif" ICON_"18"
ICON_HEIGHT="18"></TAGSPEC>
  使用 TAGSPEC 可以定义出两类不同的标签:普通的 HTML 样式标签,和 string-delimited 标签,后者开始和结束位置都是一个字符串。String-delimited 标签有点像空闲 HTML 标签(如 IMG),在这样的标签之下没有围住任何的内容,也没有封闭标签。前边演示的 HAPPY 标签就是一个普通的 HTML 样式的标签;它的开始标签是 <HAPPY>,包围的有内容,而结束标签是 </HAPPY>。ASP 标签也属于 string-delimited 标签,它以字符串 <% 开始,以字符串 %> 结束。

下边的表格描述了 TAGSPEC 的属性及其可能的属性值: 属性 属性值 描述
TAG_NAME
tagName
自定义标签的名字。必需的。(对于 string-delimited 标签来讲,TAG_NAME 只是用来确定给定的属性面板是否可用于这个标签。如果属性面板的第一行包含了这个标签的名字,而且前后都有一个星号,那么属性面板就可以用于这种类型的标签。例如,对于 ASP 代码来讲,TAG_NAME 就是 ASP;能够检查出 ASP 代码的属性面板必须在第一行有 *ASP*。有关属性面板 API 的介绍,参阅 Extending Dreamweaver 的 "Property Inspectors" 部分。)

TAG_TYPE
empty 或 nonempty
确定标签本身是否就是内容(如 IMG),或者这个标签是否包围内容(如 CODE)。对于普通标签(而非 string-delimited 标签) 这个属性是必需的。

RENDER_CONTENTS
TRUE 或 FALSE
决定标签中的内容是否应该出现在文档窗中,或者仅仅是以图标代替。对于非空闲标签这个属性是必需的。只适用于出现在属性之外的标签。

CONTENT_MODEL
block_model,head_model,marker_model,或 script_model
描述标签内可以包含什么样的内容和这个标签可以被什么内容包含。必需的。

block_model 规定了可以包含块一级部件--DIV 和 P--的元素,和只能够出现在 BODY 部分或只能出现在正文内容标签--DIV,LAYER,或 TD 内的标签。

head_model 规定了可以包含文本内容的标签,以及只能出现在 HEAD 部分的标签。

marker_model 规定了可以包含任何有效的 HTML 代码的标签,以及可以出现在任何地方的标签。(由于在一个有效的 HEAD 不见外边添加文本会生成无效的 HTML,所以如果你想将包含有文本的自定义标签放到 HEAD 部分的话,就必须使用 head_model 来代替 marker_model。)

使用 marker_model 来规定那些需要成行显示(位于诸如 P 或 DIV 等块级元素之内)而不致断行的标签。

script_model 允许它所规定的标签存在于文档开始和封闭 HTML 标签中的任何位置。当 Dreamweaver 遇到这种类型的标签时,程序会忽略标签的所有内容的。这个主要用于 Dreamweaver 不能解析的第三方标签标记(像某些 ColdFusion 标签)。

START_STRING
beginningOfTag
规定标记 string-delimited 标签开始的分隔符。String-delimited 标签可以出现在文档中任何注解出现的位置。Dreamweaver 不会执行 START_STRING 和 END_STRING 之间的任何的标签解析和条目或 URL 编码的。如果 END_STRING 被指定,这个属性就是必需的。

END_STRING
endOfTag
规定标记 string-delimited 标签结束的分隔符。如果 START_STRING 被指定,这个属性就是必需的。

DETECT_IN_ATTRIBUTE
TRUE or FALSE
指明是否忽略 START_STRING 和 END_STRING (或者是没有定义字符串的开始和封闭标签)之间的一切内容,不管那些字符串是否位于属性的名字或属性之内。对于 string-delimited 标签来说这个属性值必需设定为 TRUE;默认值是 FALSE。

PARSE_ATTRIBUTES
TRUE or FALSE
指明是否解析标签属性。如果属性值设定为 TRUE (默认),Dreamweaver 就会对属性进行解析;如果属性值设定为 FALSE,Dreamweaver 会忽略右引号后边第一个出现的尖括号为止的一切内容。例如,对于像 CFIF (as in <cfif a is 1>) 这样的标签这个属性值就要设定为 FALSE。

ICON
URL
规定标签图标的文件名和路径。对空闲标签来说这个属性是必需的,对那些内容不显示在文档窗的非空闲标签来说也是必需的。

ICON_WIDTH
widthInPixels
规定图标的宽度。

ICON_HEIGHT
heightInPixels
规定图标的高度。