`

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...

    jasperreports-html-component-6.5.0.jar

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

    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...

    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