HTC经典实例(一)

转载 2006年06月13日 16:08:00

1.摘要
本文在实例的基础上讨论了HTC(HTML Component)的编程方法,提出了一种编写脚本组件的基本模式。
2.目标读者
HTML开发人员,脚本开发人员,系统分析人员
3.背景知识
HTML, DHTML, CSS
4.引言
HTC(HTML Component)直译为HTML组件,并不是一项新技术。可是说谈不上是一门技术。实际上只是IE浏览器内置的一种脚本封装机制。由于讨论的人很少,而Microsoft也没有什么技术支持,故而应用的人很少。但是HTML有着很好的特性可以使我们的开发工作高效。并且你有可能发现,HTC或许可以改变你以往开发应用的方式。

在MSDN online对HTC的定义仅如下几句:
HTML Components (HTCs) provide a mechanism to implement components in script as Dynamic HTML (DHTML) behaviors. Saved with an .htc extension, an HTC is an HTML file that contains script and a set of HTC-specific elements that define the component.
(HTC是由HTML标记、特殊标记和脚本组成的定义了DHTML特性的组件.)

一般而言,HTC是组件化了的脚本过程。尽管引入浏览器的机制不同,但遵循相同的SDK规范。无论是脚本运行环境,还是DOM文档结构。但HTC有着极高的扩展性。也就是说,HTC可以为我们的HTML引入高级的自定义行为(behavior)。例如自定义的attribute, method, 或者事件。这就说明,我们可以使用HTC机制来开发一个有着高级特性的,可重用的,可扩展的组件。

5.实例
为了使篇幅不会太大,我们设想一个实例。话说有一天你的项目经理找到你,说客户不满意我们的项目中的用户UI设计,因为我们的客户是比较有审美情趣的人,讨厌那些windows样式的灰秃秃的按钮。所以要你设计一系列平面的,而且能随着鼠标变化颜色的按钮。你说这没问题,但是需要一天时间,不出意料地使你的项目经理惊讶之后,你解释到以你的技术水准,不可能写一堆脚本和CSS class到HTML里,你的产品一定是reusable, flexiable, 和extendable的。他答应了。于是第二天,你交给他如下源代码:

ButtonStyleFlat.htc:
另外有一个sample用于参考:
sample.html:
(分别见以下文本框)

 


sample.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Sample</title>
</head><body bgcolor=#ffffff>
<button id=oButton style='behavior: url(ButtonStyleFlat.htc)'>push me please</button>
<script>
oButton.onpush=function(){
   oButton.showMessage();
}
</script>
</body>

 

<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="ondocumentready" ONEVENT="DoInit()" />
<PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="DoMouseOver()" />
<PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="DoMouseOut()" />
<PUBLIC:ATTACH EVENT="onmousedown" ONEVENT="DoMouseDown()" />
<PUBLIC:ATTACH EVENT="onmouseup" ONEVENT="DoMouseUp()" />
<PUBLIC:ATTACH EVENT="onclick" ONEVENT="DoClick()" />

<PUBLIC:PROPERTY NAME="ColorOver" />
<PUBLIC:PROPERTY NAME="ColorOut" />
<PUBLIC:PROPERTY NAME="ColorDown" />
<PUBLIC:PROPERTY NAME="ColorUp" />
<PUBLIC:PROPERTY NAME="Scheme" />

<PUBLIC:EVENT NAME="onPush" ID="push"  />

<PUBLIC:METHOD NAME="showMessage"  />

<script>
function DoInit(){
    switch(Scheme){
        case "Normal":
            if(ColorOver==null) ColorOver='Orange';
            if(ColorOut==null) ColorOut='RoyalBlue';
            if(ColorDown==null) ColorDown='Black';
            if(ColorUp==null) ColorUp='YellowGreen';
        break;
        default:
            if(ColorOver==null) ColorOver='Orange';
            if(ColorOut==null) ColorOut='RoyalBlue';
            if(ColorDown==null) ColorDown='Black';
            if(ColorUp==null) ColorUp='YellowGreen';
    }
   
        runtimeStyle.borderWidth='0px';
        runtimeStyle.textAlign='center';
        runtimeStyle.padding='3';
        runtimeStyle.verticalAlign='bottom';
        runtimeStyle.color='white';
        runtimeStyle.cursor='hand';
        runtimeStyle.background=ColorOut;
        runtimeStyle.unselectable='on';
}

function DoMouseOver(){
    runtimeStyle.background=ColorOver;
}

function DoMouseOut(){
    runtimeStyle.background=ColorOut;
}

function DoMouseDown(){
    runtimeStyle.background=ColorDown;
}

function DoMouseUp(){
    runtimeStyle.background=ColorUp;
}

function DoClick(){
    push.fire();
}

function showMessage(){
    alert("showMessage run.");
}
</script>
</PUBLIC:COMPONENT>

Unity 5.4大赞:HTC Vive经典The lab渲染器开源

HTC Vive提供了一个不错的免费VR demo,最近1周仔细体验了一番。 仔细看了其安装文件,竟然是Unity 5.4beta版本(通过查log,知道Valve公司用的是最新的5.4...

htc调用实例

  • 2008年05月30日 14:47
  • 908KB
  • 下载

Java经典设计模式之十一种行为型模式(附实例和详解)

Java经典设计模式共有21中,分为三大类:创建型模式(5种)、结构型模式(7种)和行为型模式(11种)。本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:Java经典设计模式之五...

100多个经典常用的网站源码大全实例演示和下载

推荐源码 /Source   更多 >06-19 最新微信夹娃娃抓娃娃抓猴子游戏三级分销源码小游戏06-18 最新PHP+Mysql实现新丽都娱乐时时彩系统06-18 2017最新彩票网站管理系统源码...

Loadrunner经典测试实例((中)

在上文中,介绍了如果录制脚本和设置脚本执行次数。如果经过调试脚本能够正常工作的话,就可以设置并发用户数并进行压力测试了。        首先我们通过脚本编辑界面上的“工具”菜单项,选择该菜单的第二项...

c#经典编程实例(四窗体应用程序)

一:.NET中窗体应用程序就是一种GUI程序 窗体创建的两种方式: (1)自动生成的是: Application.Run(new Form1()); 相当于: Form1 f...

asp.net经典问题之“未将对象引用设置到对象的实例”

转载自:http://blog.csdn.net/sunqing0316/article/details/20797245         相信几乎所有学过asp.net的朋友都遇到...

Android开发入门经典实例

androidandroid-studio 0  2  From:https://www.tianmaying.com/tutorial/a-simple-sample-for-androi...

asp.net经典问题之“未将对象引用设置到对象的实例”

相信几乎所有学过asp.net的朋友都遇到过这个问题:未将对象引用设置到对象的实例。这个问题在我刚开始学习这方面的知识的时候真有点让崩溃的感觉,当时都快打击死我了,不过经过了以后,反而有一种明朗的小激...

国外经典网页设计:50个优秀的移动网站设计实例

移动互联网正高速发展中,预计到2014年,移动互联网的用户访问量将超过传统的PC互联网。目前,越来越多的用户通过手机上网冲浪,对于设计师来说,他们需要去优秀的移动网站以吸引更多的用户。为了帮助大家学习...
  • Tizian
  • Tizian
  • 2012年08月27日 09:16
  • 1219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTC经典实例(一)
举报原因:
原因补充:

(最多只允许输入30个字)