运行Behaviors

---原作《网猴》 编译《搜狐》
当你决定插入一个"behavior"时,将同时引发许多事件的发生。

Dreamweaver会检查文本中是否已经存在了相配的JavaScript函数。如果没有,Dreamweaver会在"behavior"文档中查找该函数,并将找到的函数插入文本头中。如果已经存在这个函数,Dreamweaver就不再执行任何操作。

例如,当我想在用户文档中插入WM_position2element()函数时,我会需要一个带有该文件名的函数以及一个将使用Dreamweaver的behaviorFunction()的函数,该函数可能是这个样子:

function behaviorFunction(){


  return "WM_position2element"

}
现在我们在文本中已经有了该函数,还需要将该函数指派给合适的事件控制柄。Dreamweaver Behaviors只执行事件,这些事件都是由用户从"Behaviors"窗口选择的。在本例中,用户选择了"onMouseOver"事件。


由于事件不受编码作者的控制,所有函数自变数则应该通过Dreamweaver "applyBehavior()"函数被放入事件控制柄内。此函数会将自变数插入适当的控制柄中,最终的控制柄内容如下:
 onMouseOver="WM_position2element('document.layers[\'Layer1\']',
'document.all[\'Layer1\']','left',30,'window','window','top')"
正如你所看到的,所有用户输入的信息将被置于事件控制柄内的函数自变数中。有时制作JavaScript脚本最困难的部分就是Netscape和Internet Explorer两个浏览器的文本对象模块在涉及预置内容时的巨大差异。在某预置部位某幅图片在Navigator浏览器中的参照是document.myLayer.document.myImage,而在Internet Explorer浏览器中的参照则是document.myImage。这样就要求你必须创建"behaviors"进行浏览器检测来处理兼容性问题,向函数自变数中传输与浏览器相符的适当的对象参照。

Dreamweaver软件中包括了一些可以帮助你获取所需自变数的函数。通过dreamweaver.getObjectRefs()函数,你可以获取Netscape或Internet Explorer两种浏览器的一组对象参照,然后你可以使用dreamweaver.getObjectRefs()函数在属性检查器中安置表单域,并向"behavior"脚本传输两个参照,其中一个针对Internet Explorer浏览器,一个针对Netscape浏览器。

另外,获取正确的文件对象模块参照并不是你惟一会在"Behaviors"中遇到的麻烦,用户一般喜欢它们的应用程序能够拥有一定的记忆性,如果他们在填写表格时一些重复性信息能够自动出现,用户就会感到非常高兴。

为了实现程序的记忆性,创建"Behaviors"的制作者就应该在脚本中使用inspectBehavior()函数,该函数恰好与applyBehavior()函数相对,applyBehavior()函数将一个填写好的用户界面信息转换为函数自变数,而inspectBehavior()函数则将一个函数自变数转入填写表单。

如果用户点击"Behaviors"窗口中某现存的行为,就会调出inspectBehavior()函数。该函数带有一个自变数,当插入一个"behavior"时,由applyBehavior()函数返回的字符串将与该自变数相关。最后用户需要对返回信息进行处理并填充用户界面中的相应设置。

好了,上面主要介绍了编写"behavior"的基本知识,接下来我们来学习"Commands"。