`

HTC(HTML Component) 入门

阅读更多
   新项目用了Chordiant框架(cafe),使用了大量的js函数,而且遇到了一个htc类型的文件。搜了一篇文章。

   HTC是HTML Component的缩写,是IE5及后续版本浏览器所支持的客户端组件。HTC就是一组以DHTML为基础封装了客户端行为的脚本,每HTC以*.htc的文件存储,一个HTC是一个客户端“类”。

编写HTC最重要的一点是知道element对象的意思,它代表了当前的HTC,类似于Java类中的this。例如element.innerHTML可以访问当前HTC对象在document中所包含的html代码。既然HTC是“类”,它当然有属性、方法、事件,下面简要说明其定义方式:

l  <PUBLIC:COMPONENT></PUBLIC:COMPONENT>:定义HTC,这个标签是其他定义的父元素。

2  <PUBLIC:PROPERTY NAME=”pName” GET=”getMethod” PUT=”putMethod” />: 定义HTC的属性,里面三个定义分别代表属性名、读取属性、设置属性时HTC所调用的方法。

3  <PUBLIC:METHOD NAME=”mName” />:定义HTC的方法,NAME定义了方法名。

4  <PUBLIC:EVENT NAME=”eName” ID=”eId” />:定义了HTC的事件,NAME定义了事件名,ID是个可选属性,在HTC中唯一标识这个事件。

5  <PUBLID:ATTACH EVENT=”sEvent” ONEVENT=”doEvent” />:定义了浏览器传给HTC事件的相应方法,其中EVENT是浏览器传入的事件,ONEVENT是处理事件的方法。

    我们经常看到某些网页上有这样的效果:用户点击一个按钮,文本显示,再次点击这个按钮,文本消失,但浏览器并不刷新。下面我就用HTC来实现这个简单效果。编程思路是这样的:用HTC模拟一个开关,它有”on”和”off”两种状态(可读/写属性status);用户可以设置这两种状态下开关所显示的文本(设置属性 turnOffText和turnOnText);用户点击开关时,开关状态被反置,并触发一个事件(onStatusChanged)通知用户,用户可以自己写代码来响应这个事件;该HTC还定义了一个方法(reverseStatus),用来反置开关的状态。下面是这个HTC的代码:
<!—switch.htc定义 -->
<PUBLIC:COMPONENT TAGNAME="Switch">
    <!--属性定义-->
    <PUBLIC:PROPERTY NAME="turnOnText" PUT="setTurnOnText" VALUE="Turn on" />
    <PUBLIC:PROPERTY NAME="turnOffText" PUT="setTurnOffText" VALUE="Turn off" />
    <PUBLIC:PROPERTY NAME="status" GET="getStatus" PUT="setStatus" VALUE="on" />

    <!--定义事件-->
    <PUBLIC:EVENT NAME="onStatusChanged" ID="changedEvent" />

    <!--定义方法-->

    <PUBLIC:METHOD NAME="reverseStatus" />

    <!--关联客户端事件-->
    <PUBLIC:ATTACH EVENT="oncontentready" ONEVENT="initialize()"/>
    <PUBLIC:ATTACH EVENT="onclick" ONEVENT="expandCollapse()"/>

</PUBLIC:COMPONENT>

<!-- htc脚本 -->
<script language="javascript">
    var sTurnOnText;    //关闭状态所显示的文本
    var sTurnOffText;   //开启状态所显示的文本
    var sStatus;    //开关状态
    var innerHTML   //使用开关时包含在开关中的HTML   

    //设置开关关闭状态所显示的文本
    function setTurnOnText(value)
    {
        sTurnOnText = value;
    } 

    //设置开关开启状态所显示的文本
    function setTurnOffText(value)
    {
        sTurnOffText = value;
    }   

    //设置开关状态
    function setStatus(value)
    {
        sStatus = value;
    } 

     //读取开关状态
    function getStatus()
    {
        return sStatus;
    }   

    //反向开关的状态
    function reverseStatus()
    {
        sStatus = (sStatus == "on") ? "off" : "on";
    }

    //获取htc控制界面html文本
    function getTitle()
    {
        var text = (sStatus == "on") ? sTurnOffText : sTurnOnText;
        text = "<div id='innerDiv'>" + text + "</div>";
        return text;

    }

    //htc初始化代码
    function initialize()
    {
        //back up innerHTML
        innerHTML = element.innerHTML;
        element.innerHTML = (sStatus == "on") ? getTitle() + innerHTML : getTitle();
    } 

    //响应用户鼠标事件的方法
    function expandCollapse()
    {
         reverseStatus();
         //触发事件
         var oEvent = createEventObject();
         changedEvent.fire(oEvent);  
         var srcElem = element.document.parentWindow.event.srcElement;
         if(srcElem.id == "innerDiv")
         {
              element.innerHTML = (sStatus == "on") ? getTitle() + innerHTML : getTitle();
         }
    }
</script>


下面是如何使用这个HTC,注释写的比较清楚了,不再多解释了!
<!--learnhtc.html-->
<html xmlns:frogone><!--定义一个新的命名空间-->
<head>
    <!--告诉浏览器命名空间是由哪个HTC实现的-->
    <?IMPORT namespace="frogone" implementation="switch.htc">
</head>
<body>
   <!--设置开关的各个属性及内部包含的内容-->
   <frogone:Switch id="mySwitch"
                    TurnOffText="off"
                    TurnOnText="on"
                    status="off"
                    onStatusChanged="confirmChange()">
        <div id="dBody">文本内容...... </div>
    </frogone:Switch>
</body>
<script language="javascript">
    //相应开关事件
    function confirmChange()
    {
        if(!confirm("是否改变开关状态?"))
            mySwitch.reverseStatus();
    }
</script>
</html>


原文地址:http://blog.csdn.net/crazy_rain/archive/2007/03/14/1529427.aspx
分享到:
评论

相关推荐

    HTML Component Library v4.0 (Delphi 5-XE2)

    HTML Component Library v4.0 是一个专为 Delphi 5 到 XE2 开发者设计的组件库,它提供了一系列强大的控件和工具,帮助开发者在 Delphi 应用程序中集成和处理 HTML 内容。这个库的目的是简化在桌面应用中嵌入和操作 ...

    HTML.Component.Library

    HTML Component Library is a cross-patform and 100% native HTML rendering library for Delphi that brings all the power of HTML/CSS into desktop and mobile Delphi applications. Unlike other «HTML-like...

    HTML Component Library 3.9.rar

    HTML Component Library is a cross-patform and 100% native HTML rendering library for Delphi and Lazarus that brings all the power of HTML/CSS into desktop and mobile Delphi applications. Unlike other...

    jasperreports-html-component-6.5.0.jar

    jasperreports-html-component-6.5.0,jaspertReport HTML标签组件

    HTML Component(HTC)简介.pdf

    HTML Component (HTC) 是一种在早期Web开发中,尤其是微软Internet Explorer (IE) 5.0及更高版本中用于实现动态HTML (DHTML) 行为的技术。这些行为允许开发者将JavaScript函数和CSS样式封装成可重用的组件,以增强...

    HTML Component Library 3.9.zip

    HTML Component Library 3.9 是一个专为 Delphi 开发者设计的组件库,它包含了丰富的 HTML 和 Web 相关的组件,可以帮助开发者在 Delphi 应用程序中轻松地集成和展示 HTML 内容。这个版本号为 3.9,意味着它经过了多...

    HTML Component Library 3.70 Full Source

    TML Component Library is a cross-patform and 100% native HTML rendering library for Delphi and Lazarus that brings all the power of HTML/CSS into desktop and mobile Delphi applications. Unlike other ...

    HTML Component Library For xe10-xe101-Xe102

    HTML Component Library is a cross-patform and 100% native HTML rendering library for Delphi that brings all the power of HTML/CSS into desktop and mobile Delphi applications. Unlike other «HTML-like...

    HTML Component(HTC)简介.docx

    HTML Component (HTC) 是一种在早期Web开发中,尤其是针对Internet Explorer 5.0及更高版本的技术,用于实现DHTML(动态HTML)中的代码重用和组件化。这一技术称为“行为”,允许开发者将特定功能封装在独立的组件中...

    delphi HTML component

    The HTML component set consists of the ThtmlViewer, TFrameViewer, and TFrameBrowser components. All three are HTML document display components: ThtmlViewer The basic component. ThtmlViewer displays ...

    HTML.Component.Library.v.3.61.D5-XE10.1.Stp

    HTML Component Library is a cross-patform and 100% native HTML rendering library for Delphi that brings all the power of HTML/CSS into desktop and mobile Delphi applications. Unlike other «HTML-like...

    ComponentOne OLAP for WinForms 入门教程

    ### ComponentOne OLAP for WinForms 入门教程 #### ComponentOne OLAP for WinForms 概述 ComponentOne OLAP for WinForms 是一款专为 .NET 开发者设计的强大工具包,它提供了创建复杂的在线分析处理 (OLAP) 应用...

    HTML Component Library v 3.70 D5-XE10.2

    HTML Component Library v 3.70 D5-XE10.2 : 官方网址在这儿 https://delphihtmlcomponents.com/editor.html WYSIWYG editing. Does not use IE or other libraries (100% native Delphi code). Supports all Delphi...

    HTML.Component.Library.v.3.61.D5-XE10.1.Stp.rar

    HTML组件库(HTML.Component.Library)是为Delphi开发者设计的一款强大的工具集,版本v3.61,适配D5到XE10.1等多个版本的Delphi开发环境。这个库提供了一系列的控件和组件,使开发人员能够更轻松地在Delphi应用中...

    webservice.htc等htc文件

    【标题】: "Web服务扩展技术——HTC(HTML Component)与webservice.htc" 【描述】: 在早期的Web开发中,微软提供了一种名为HTML Component(HTC)的技术,用于增强HTML元素的功能,webservice.htc是其中的一个特定...

    HTML_Component_Library_v3.8_D5-XE10.3_Downloadly.ir.rar

    HTML_Component_Library_v3.8_D5-XE10.3_Downloadly.ir.rar

    HTML_Component_Library_3.64_D5-XE10.2_Downloadly.ir.rar

    HTML_Component_Library_3.64_D5-XE10.2_Downloadly.ir.rar

    flex 的基础入门书+flex组建大全(component explorer)

    flex 的基础入门书+flex组建大全(component explorer),帮你尽快走进flex

Global site tag (gtag.js) - Google Analytics