初学HTC


    以前很少做UI,没有接触过HTC;今天公司培训,讲HTC,讲师在上面讲了半个钟,我还没有听明白是咋回事,他就布置下一道练习:
写一个HTC,要求:
1、在点击被绑定的<SPAN>标签时,改变SPAN的内容:被点击的次数;
2、提供一个属性,MaxClickCount;
3、提供一个方法,GetClickedCount ,返回被点击次数;
4、提供一个事件,当点击次数达到MaxClickCount,抛出事件;
5、写一个页面调用HTC。

上网搜了一下,得到如下资料:
    HTC是HTML Component的缩写,是IE5及后续版本浏览器所支持的客户端组件。据我个人理解,HTC就是一组以DHTML为基础封装了客户端行为的脚本,每HTC以*.htc的文件存储,一个HTC是一个客户端“类”。
                                                                                                                                                                                                                         
    编写HTC最重要的一点是知道element对象的意思,它代表了当前的HTC,类似于C#类中的this。例如element.innerHTML可以访问当前HTC对象在document中所包含的html代码。既然HTC是“类”,它当然有属性、方法、事件,下面简要说明其定义方式:
                                                                                                                                                                                                                    
<PUBLIC:COMPONENT></PUBLIC:COMPONENT>:定义HTC,这个标签是其他定义的父元素。
<PUBLIC:PROPERTY NAME=”pName” GET=”getMethod” PUT=”putMethod” />: 定义HTC的属性,里面三个定义分别代表属性名、读取属性、设置属性时HTC所调用的方法。
<PUBLIC:METHOD NAME=”mName” />:定义HTC的方法,NAME定义了方法名。
<PUBLIC:EVENT NAME=”eName” ID=”eId” />:定义了HTC的事件,NAME定义了事件名,ID是个可选属性,在HTC中唯一标识这个事件。
<PUBLID:ATTACH EVENT=”sEvent” ONEVENT=”doEvent” />:定义了浏览器传给HTC事件的相应方法,其中EVENT是浏览器传入的事件,ONEVENT是处理事件的方法。

    常用的HTC定义就这么多,有关更详细的信息,请参阅http://msdn.microsoft.com/library/default.asp?url=/workshop/components/htc/reference/htcref.asp


       开始做练习,还是不会....慢慢磨啊...磨啊...终于在一个多小时后,把结果给磨出来了,汗...

 

ContractedBlock.gif ExpandedBlockStart.gif count.htc
None.gif<PUBLIC:COMPONET>
None.gif
<!--定制事件-->
None.gif
<PUBLIC:EVENT NAME="spanOnClick" id="onMaxClickCount"/>
None.gif
<!--定制方法-->
None.gif
<PUBLIC:method name="GetClickedCount" internalName="f_GetClickedCount"/>
None.gif
<!--定制属性-->
None.gif
<public:property name="MaxClickCount" get="get_MaxClickCount" put="set_MaxClickCount"/>
None.gif
<!--关联客户端element的onclick事件,element被click时,执行f_spanOnClick()函数-->
None.gif
<PUBLIC:ATTACH EVENT="onclick" ONEVENT="f_spanOnClick()"/>
None.gif
None.gif
<!-- htc脚本 -->
ExpandedBlockStart.gifContractedBlock.gif
<script>dot.gif
InBlock.gif
var count=0;
InBlock.gif
var MaxClickCount=0;
InBlock.gif
InBlock.gif
function get_MaxClickCount()
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif    
return MaxClickCount;
ExpandedSubBlockEnd.gif}

InBlock.gif
InBlock.gif
function set_MaxClickCount(value)
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif    MaxClickCount
=value;
ExpandedSubBlockEnd.gif}

InBlock.gif
InBlock.gif
function f_GetClickedCount()
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif    
return count;
ExpandedSubBlockEnd.gif}

InBlock.gif
InBlock.gif
function f_spanOnClick()
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif    
if(count<MaxClickCount)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        count
++;
InBlock.gif        element.innerHTML
="Count:" + count.toString();
ExpandedSubBlockEnd.gif    }

InBlock.gif    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//触发spanOnClick事件
InBlock.gif
        oEvent = createEventObject();
InBlock.gif        onMaxClickCount.fire(oEvent);
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif
None.gif
</script>
None.gif
</PUBLIC:COMPONENT>

 

ContractedBlock.gif ExpandedBlockStart.gif test.html
None.gif<html>
None.gif    
<body onload="init()">
None.gif        
<align="center">
None.gif            
<!--htc中定制了spanOnClick事件,并且为span的onclick事件绑定了方法-->
None.gif            
<span spanOnClick="Over()" id="countBar" title="Count:" style="BEHAVIOR:url(count.htc); CURSOR:hand; font-size:20; background-color:red;" >Count</span>
None.gif      
</p>
None.gif    
</body>
None.gif
ExpandedBlockStart.gifContractedBlock.gif    
<script>dot.gif
InBlock.gif        
function init()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            countBar.MaxClickCount
=3;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
function Over()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            alert('Game Over');
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    
</script>
None.gif
None.gif
</html>


 

转载于:https://www.cnblogs.com/happyhippy/archive/2007/07/12/815934.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值