博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初学HTC
阅读量:6870 次
发布时间:2019-06-26

本文共 2280 字,大约阅读时间需要 7 分钟。

    以前很少做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定义就这么多,有关更详细的信息,请参阅
       开始做练习,还是不会....慢慢磨啊...磨啊...终于在一个多小时后,把结果给磨出来了,汗...

 

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

你可能感兴趣的文章
数据结构与算法-->互为素数
查看>>
Linux系统学习方法——写给小白
查看>>
Nginx服务器报500 Internal Server Error错误
查看>>
链表的游标实现
查看>>
别伤了虚拟桌面管理员的"心"
查看>>
yum安装lamp
查看>>
[Unity 3D] Unity 3D 性能优化 (一)
查看>>
Disabling OOM killer on Ubuntu 14.04
查看>>
VBS备份脚本
查看>>
CentOS 6.5 自动安装镜像
查看>>
Storm与Spark Streaming比较
查看>>
我的友情链接
查看>>
Exchange Server 运维管理01:Exchange中Active Directory 有什么用?
查看>>
linux系统管理之四:服务状态
查看>>
VMware View FAQ[一]
查看>>
【原创翻译】布尔值(boolean)
查看>>
三元运算式、lambda表达式、内置函数map、reduce、filter以及yield生成器
查看>>
MySQL分库分表分表后数据的查询(5th)
查看>>
iOS-点击图片放大,再次点击返回原视图 类似查看相册的功能
查看>>
JAVA -- stateless4j StateMachine 使用浅析(二)
查看>>