HTML组件(HTML COMPONENTS)之三

===最顶级页面===
  现在我们将我们注视的焦点转向我们的日历应用例子,该应用包括4个不同页面,canlendar.html为最顶级HTML文档,该页包含了calendar.htc HTC,而canlendar.htc有反过来包含两个别的HTC:day.htc和today.htc,calendar.html
内容如下:

Click a day in the calendar to add or modify your schedule.

<?XML:NAMESPACE PREFIX = MYCAL />

  有几个要点您必须重点注意:第一、命名空间定义在〈HTML〉标记中,我们需要使用在我们要调用的HTC中定义的命名空间,在canlendar.htc中的命名空间是:MYCAL,所以在标记中必须出现XMLNS标识。
  标记以问号开始以和别的正常标记区别开,该标记要求浏览器导入指定的HTC:calendar.htc,HTC可以有多个命名空间,故在导入时需要指明要使用的命名空间(MYCAL):

  HTC的主要优点之一就是:浏览器将一直挂起页面解析直到输入文件全部被导入为止。页面处理的异步机制将导致许多问题,浏览器并不等元素已经完全显示才开始解析页面,作为例子,你可以建立一个对象,并且在文挡的顶部访问一个在页面底部的方法,如果对象因为某些原因为准备好,你将会得到一个错误指示没有该对象不存在或该对象不支持你要访问的方法,相信您已经碰到过此类事情了吧!不管这样,?IMPORT 是同步的,并且浏览器会一直等待页面导入完毕并且内容准备好。

  页面唯一而且重要的一行是调用自定义标记MYCAL:CALENDAR:

  因为页面已经导入,故该调用将会象在calendar.htc所指定的那样建立一个日历。

  您可能已经注意到HTC可以包含别的HTC,calendar.htc包括两个别的HTML组件,每个月的所有日期:day.htc和与当前日期一致的today.htc,以下是canlendar.htc的顶部15行:

<HTML XMLNS:MYCAL XMLNS:TODAY XMLNS:ANYDAY>
<HEAD>
<?IMPORT NAMESPACE="ANYDAY" IMPLEMENTATION="day.htc"/>
<?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>

  我们只是简单的传入了当月中的第几天,同样的调用ANYDAY:DAY 也是简单的传入当月中的第几天:

<ANYDAY:DAY value=' + dayOfMonth + '></ANYDAY:DAY>

时间: 2024-11-02 06:46:32

HTML组件(HTML COMPONENTS)之三的相关文章

HTML组件(HTML COMPONENTS)之一

HTML 组件(HTML COMPONENTS)是IE5.0的主要扩展之一,其也最具革命性,微软的意图是用HTML组件来取代ACTIVEX控件,和ACTIVE控件一样,HTML组件是自持续封闭对象,可以一次开发任意使用,使用HTML组件有很多好处,本文将给您揭示其中的一些! HTML组件带入了很多新的术语.思想.对象.方法和属性,我将通过一个日历应用给您接受这些,这个日历应用显示当前月的日期.星期并且高亮度显示当前日期. ====HTML行为和HTC行为=== HTML组件封装了HTML内容,并

HTML组件(HTML COMPONENTS)之五

===ANYDAY 和 TODAY HTCs=== ANYDAY组件定义在day,htc中,该组件是日历单元的一个封装.组件的名字是由定义在第一行的XML命名空间决定的. <HTML XMLNS:ANYDAY> 正如canlenar.htc一样,你只有一个命名空间定义,原因是在该页不用调用其他的HTC,也就是说该HCT是叶子HTC,在这里我们定义的自定义标签是DAY,同样我们也定义它的行为,实际上,HTML组件的定义就是自定义标签行为的定义,该行为包括一个属性和一个事件: <PUBLIC

Enterprise JavaBeans组件慨述之三

布署和使用 Enterprise JavaBeans 组件 本文的第 3 部分说明 Enterprise JavaBeans 组件的部署过程,部署并不仅仅是安装,因为它通常还涉及代码生成.部署还使用了一个特殊的部署描述符文件,此文件支持控制企业级 bean 行为(如某个 bean 是否需要事务)的参数.bean 部署的这一特性支持 bean 行为的说明性.纲领性规范的 EJB 目标.第 3 部分还比较了持久性的两种主要类型,bean 管理式持久性和容器管理式持久性,并讨论了 EJB 组件与 CO

HTML组件(HTML COMPONENTS)之八

===TODAY HTC===  <HEAD> <PUBLIC:COMPONENT tagName="DAY"> <PROPERTY NAME="value"></PROPERTY> <ATTACH EVENT="oncontentready" ONEVENT="fnInit()"></ATTACH> </PUBLIC:COMPONENT> &

HTML组件(HTML COMPONENTS)之七

===CALENDAR HTC===  <HEAD> <?IMPORT NAMESPACE="ANYDAY" IMPLEMENTATION="day.htc"/> <?IMPORT NAMESPACE="TODAY" IMPLEMENTATION="today.htc"/> <PUBLIC:COMPONENT tagName="CALENDAR"> <A

HTML组件(HTML COMPONENTS)之六

====日历主页面===  <head> <title>Calendar Example</title> <?IMPORT NAMESPACE="MYCAL" IMPLEMENTATION="calendar.htc"/> </HEAD> <BODY> <P>Click a day in the calendar to add or modify your schedule.<

HTML组件(HTML COMPONENTS)之四

===编写日历一=== 当calendar.html调用 MYCAL:CALENDAR,当月的日历将会显示在页面中,函数setCal()是主要程序段,它初始化一些变量并调用drawCal()函数.我们也使用了三个别的函数:getMonthName(). getDays() 和 leapYear().让我们从最后一个函数开始: getDays()函数接收哪月值和哪年值,并且建立一个有12个元素的数组,用来存放每月的天数,哪一年用来决定是不是闰年,在闰年中二月是29天,而不是闰年是28天.该函数返回

HTML组件(HTML COMPONENTS)之二

===定义标记和命名空间=== HTC的基础是自定义标记,自定义标记的第一次出现是在IE5.0中,它可以让WEB作者通过与结构关联的一系列样式来定义文挡结构,例如:您可以定义一个新标记<RIGHT>(段落右对其) <HTML XMLNS:DOCJS> <HEAD> <STYLE> @media all { DOCJS\:RIGHT {text-align:right; width:100} } </STYLE> </HEAD> <

以增加收藏夹功能为实例,解析asp.net forums2结构流程及组件设计

asp.net|设计 td id="1" class="ControlPanelTabInactive" align="center" nowrap>            <a href="<%=Globals.GetSiteUrls().MyFavorites%>"><%=ResourceManager.GetString("MyFavorites_Title")%&