HTML组件(HTML COMPONENTS)之三(2) <?IMPORT NAMESPACE="TODAY" IMPLEMENTATION="today.htc"/> <PUBLIC:COMPONENT tagName="CALENDAR"> <ATTACH EVENT="oncontentready" ONEVENT="fnInit()"/> </PUBLIC:COMPONENT> <SCRIPT LANGUAGE="JavaScript"> <!-- function fnInit() { defaults.viewLink = document; } // --> </SCRIPT> 第一行在这些HTC会用到的XML命名空间。这些命名空间即包括本页自己要用到的,也包括页面需调用的命名空间(ANYDAY 和 TODAY ),注意命名空间并不一定要和HTC文件文件名一致。接着,我们导入这些HTC: <?IMPORT NAMESPACE="ANYDAY" IMPLEMENTATION="day.htc"/> <?IMPORT NAMESPACE="TODAY" IMPLEMENTATION="today.htc"/> 当我们解析到这些行,浏览器将一直等到要导入的文件被导入才继续页面解析(同步导入)。
然后我们定义CALENDAR自定义标记: <PUBLIC:COMPONENT tagName="CALENDAR"> <ATTACH EVENT="oncontentready" ONEVENT="fnInit()"/> </PUBLIC:COMPONENT> PUBLIC:COMPONENT用来描述CALENDAR标记,在开始和结束标记之间,您可以将事件附加到CALENDAR标记上,事件oncontentready将在calendar.htc文件全部被导入,并被解析时,指定处理时间的是定义在JAVASCRIPT的函数:fnInit():<SCRIPT LANGUAGE="JavaScript"> <!-- function fnInit() { defaults.viewLink = document; } // --> </SCRIPT> viewLink指定的值非常重要,它是HTML组件的基础,它连接了HTML组件和调用该HTML组件的页面,defaults对象有别的属性并且会在别的地方被覆盖,我们给viewLink属性赋的是HTML文档对象,正因为该连接,我们才可以建立HTC组件和包含页面互访。 我们将在后面解释日历的层。注意,尽管在日历中当月的当天框和其他天框、空框的样式不一样,但是我们通过优先级法则来实现在包含页中,HTML组件忽略任何相互冲突的样式定义。calendar.htc的样式定义如下: <STYLE> TD { background-color:tan; width:50; height:50; } </STYLE> 现在将该定义和日历比较,只有空框是的颜色是黄褐色的,我们调用的HTC忽略了这些定义,被调用的页面都嵌入了页面定制。以下调用TODAY:DAY HTML组件:<TODAY:DAY value=' + dayOfMonth + '></TODAY:DAY>