XML行为(behavior)是微软在IE5.5中引入的一项技术,它允许开发者将脚本和HTML组件逻辑封装在扩展名为.htc的文件中,再通过CSS的behavior属性绑定到页面元素上。这种方式让页面结构保持干净,而交互逻辑被独立出来。与之常被比较的DHTML,则是用JavaScript、CSS和DOM配合,在浏览器端动态改变内容。两者都能做出动态效果,但设计思路差别很大。

什么是XML行为与HTC文件
HTC(HTML Component)文件本质上是一个包含脚本和特定XML元素的文本文件,后缀为.htc。它在文件开头用<component>标签声明自己是一个组件,内部可以定义属性、方法、事件以及对应的处理逻辑。页面中只需写一段CSS规则,例如将某类元素的behavior指向该文件,就能让元素获得封装好的能力。
这种机制把“表现”和“行为”进一步解耦。比如我们想让所有输入框获得自动大写功能,不必在每个页面写一遍onkeyup,而是统一用一个htc控制。下面的示例展示了一个最简单的HTC,它给绑定元素添加了一条提示信息:
<component>
<public:attach event="onload" handler="init" />
<script language="javascript">
function init() {
// 元素加载后弹出绑定成功提示
element.title = '已绑定XML行为';
}
</script>
</component>
在HTML页面里,通过CSS来引用这个组件:
input.uc {
behavior: url(upload.htc);
}
这样所有class为uc的input在IE中加载时都会执行htc里的init方法。需要注意的是,behavior url路径相对于HTML页面而非htc自身,这一点在部署时容易配错。
DHTML的实现思路与局限
DHTML并不是某种单一技术,而是“动态HTML”的统称。开发者用document.getElementById拿到节点,修改style或innerHTML,再配合事件监听实现交互。代码通常直接写在页面的<script>里,或者散落在各个onclick属性中。它的优势是直观、无须额外文件,但复用性差。
例如同样做输入框提示,DHTML写法是在每个页面都加上脚本:
window.onload = function() {
var els = document.getElementsByTagName('input');
for (var i = 0; i < els.length; i++) {
els[i].onmouseover = function() {
this.title = '普通DHTML绑定';
};
}
};
对比可见,DHTML把逻辑留在页面,而XML行为把逻辑收进htc。当项目中有几十个页面都要同样效果时,htc只需改一处,DHTML却要挨个改。不过DHTML不依赖特定浏览器私有属性,在IE、Firefox、Chrome都能跑,XML行为基本只活在自己的IE时代。
核心区别与适用场景
从绑定方式看,XML行为用CSS的behavior属性挂载,属于“声明式”增强;DHTML用脚本命令式操作,属于“过程式”控制。从复用范围看,htc是物理隔离的组件文件,DHTML逻辑常和页面耦合。从标准性看,behavior是IE私有,DHTML所用API后来被各浏览器标准化。
| 对比维度 | XML行为(HTC) | DHTML |
|---|---|---|
| 逻辑位置 | 独立htc文件 | 页面脚本 |
| 绑定手段 | CSS behavior | JS事件 |
| 浏览器支持 | 仅旧IE | 广泛 |
| 复用成本 | 低 | 高 |
如果你的系统仍运行在IE8以内且需维护大量旧页面,用HTC减少重复脚本仍有价值。但新项目显然不该选它。现代浏览器用Web Components、自定义元素来实现类似“行为附加”的需求,既标准又跨平台。因此,XML行为不是“新DHTML”,而是一种被时代淘汰的私有封装尝试。
简单的事件绑定示例
HTC里可以用<public:attach>绑定元素事件,也能在脚本中用attachEvent。下面例子让元素点击时背景变红:
<component>
<public:attach event="onclick" handler="changeBg" />
<script language="javascript">
function changeBg() {
element.style.backgroundColor = 'red';
}
</script>
</component>
这段代码在IE里运行稳定,但放到Chrome就会静默失效,因为Chrome不识别behavior。这也提醒我们,评估技术不能只看功能,还要看生存环境。DHTML式的脚本虽然啰嗦,却能在任何现代浏览器继续工作,这也是它作为基础手法一直没消失的原因。
总结
XML行为借助HTC把交互封装成可挂载组件,在代码组织上比早期DHTML更优雅,却因私有化而失去未来。DHTML虽显原始,却是今天前端操作DOM的雏形。弄清二者区别,有助于我们在维护老系统时不盲目套用概念,也能在新技术选型时理解“行为分离”思想的演进脉络。
XML_behaviorDHTMLHTC修改时间:2026-08-08 15:33:31