HTC文件
在微软IE 5.0版本的浏览器发布以前,网页编程中面对的最大挑战就是不能轻易地创建组件,以达到代码重用和多页面共享的目的。这个问题一直困扰着DHTML(动态 HEML)的网页编程者。他们只能不断地重复书写HTML、CSS和javascript的代码,以满足多个页面上的重复或相似的功能。自IE 5.0浏览器发布后,这种情况得到了改善,它带给我们一个新的指令组合方法,可把实现特定功能的代码封装在一个组件内,从而实现多页面的代码重用,使网页编程进入一个全新的天地。这个新的技术就是我们要谈到的DHTML中的“行为”(Behaviors)。
“行为”作为一个简单易用的组件,它封装了页面上特定的功能或动作。当把一个“行为”附到WEB页面中的一个元件上时,这个元件的原有行为就会有所改变。因此,网页编程者可以开发通用的DHTML指令,并改变原有对象的一些属性,用“行为”来增强一个对象的功能,同时也简化了页面的HTML代码。而且“行为”的创建和使用也非常简单方便,所需的知识也只是原来已经习惯使用的CSS样式表、HTML指令和javascript脚本语言。只要你对此有所了解,有过实际编程的经历,学习并掌握“行为”的使用完全没有问题。我们将以一个改变字体效果的“行为”组件为例来说明如何编写和使用一个“行为”,并体验“行为”给页面编辑带来的优点和方便之处。
首先新建一个名为font_efftce.htc的文本文件,组成“行为”组件的文件都是以.htc为扩展名,这个文件中的内容就是我们对这个“行为”的描述。它的创建和使用步骤如下:
(1)首先给这个“行为”增加几个事件响应,语句书写格式如下:
<PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="glowit()"/><PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="noglow()"/><PUBLIC:ATTACH EVENT="onmousedown" ONEVENT="font2yellow()"/><PUBLIC:ATTACH EVENT="onmouseup" ONEVENT="font2blue()"/>
<PUBLIC:METHOD NAME="move_down"/><PUBLIC:METHOD NAME="move_right"/>
////////////////////////“行为”文档开始//////////////////////////////给“行为”增加四个鼠标事件<PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="glowit()"/><PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="noglow()"/><PUBLIC:ATTACH EVENT="onmousedown" ONEVENT="font2yellow()"/><PUBLIC:ATTACH EVENT="onmouseup" ONEVENT="font2blue()"/>//给“行为”定义二个方法<PUBLIC:METHOD NAME="move_down"/><PUBLIC:METHOD NAME="move_right"/><SCRIPT LANGUAGE="JScript">//定义一个保存字体颜色的变量var font_color;//定义向下移动文字的方法function move_down(){element.style.posTop+=2;}//定义向右移动文字的方法function move_right(){element.style.posLeft +=6;}//定义鼠标onmouseup事件的调用函数function font2blue(){if (event.srcElement == element){element.style.color='blue';}}//定义鼠标onmousedown事件的调用函数function font2yellow(){if (event.srcElement == element){element.style.color='yellow';}}//定义鼠标onmouseover事件的调用函数function glowit(){if (event.srcElement == element){font_color=style.color;element.style.color='white';element.style.filter="glow(color=red,strength=2)";}}//定义鼠标onmouseout事件的调用函数function noglow(){if (event.srcElement == element){element.style.filter="";element.style.color=font_color;}}</SCRIPT>//////////////////“行为”文档结束///////////////////////////////<STYLE>.myfilter{behavior:url(font_effect.htc);position:relative;font-weight:bold;width=180;left:0;}</STYLE><span id="myspan" class='myfilter'>行为产生的文字效果</span><br><span class='myfilter'>鼠标指向后产生辉光</span>
<button onclick="myspan.move_right();">向右移动第一行文字</button><br><button onclick="myspan.move_down();">向下移动第一行文字</button>
<html ><HEAD ><TITLE >行为效果演示< /TITLE ><STYLE >.myfilter{behavior:url(font_effect.htc);position:relative;font-weight:bold;width=180;left:0;}</STYLE></HEAD><BODY><span id="myspan" class='myfilter'>行为产生的文字效果</span><br><span class='myfilter'>鼠标指向后产生辉光</span><br><span class='myfilter'>同时文字变白</span><br><span class='myfilter'>按下鼠标后文字变黄</span><br><span class='myfilter'>抬起鼠标后文字变蓝</span><br><span class='myfilter'>鼠标离开后文字恢复原状</span><br><button onclick="myspan.move_right();">向右移动第一行文字</button><br><button onclick="myspan.move_down();">向下移动第一行文字</button></BODY></html><HTML XMLNS:DOCJS><HEAD><STYLE>@media all {DOCJS\:RIGHT {text-align:right; width:100}}</STYLE></HEAD><BODY><DOCjs:RIGHT>Read Doc javascript's columns, tips, tools, and tutorials</DOCjs:RIGHT></BODY></HTML><HTML xmlns:MyTag><HEAD><PUBLIC:COMPONENT tagName="MyTag"><PROPERTY NAME="value"></PROPERTY><ATTACH EVENT="oncontentready" ONEVENT="fnInit()"<>/ATTACH></PUBLIC:COMPONENT><STYLE>//为组件定义样式表.cssMyTag{}</STYLE><SCRIPT language=javascript>function MyTagBehavior1(){} //为组件定义方法</SCRIPT></HEAD><BODY onclick=MyTagBehavior1> //为组件定义响应事件</BODY></HTML>function fnInit() {document.body.innerHTML = element.value;//设定组件显示内容document.body.className = "clsMyTag"; //设定显示样式表,defaults.viewLink = document; //使本组件对其他文档可见element.aProperty = element.value; //设置组件的属性值}<HTML xmlns:MyCom><HEAD><?IMPORT NAMESPACE="MyCom" IMPLEMENTATION="MyTag.htc"/></HEAD><BODY><MyCom:MyTag></MyCom:MyTag></BODY></HTML>