引用:csshover.htc 文件

复制代码代码如下:
<style type="text/css">
body{ behavior:url("style/csshover.htc");}
</style>

注意修改引用文件路径。
把以下代码另存为.htc格式文件

复制代码代码如下:
<attach event="ondocumentready" handler="parseStylesheets" />
<script language="JScript">
/**
* Pseudos - V1.30.050121 - hover & active
* ---------------------------------------------
* Peterned - http://imgbuyun.weixiu-service.com/up79/202309/fs4xu0tjv3y
* (c) 2005 - Peter Nederlof
*
* Credits - Arnoud Berendsen
* - Martin Reurings
* - Robert Hanson
*
* howto: body { behavior:url("csshover.htc"); }
* ---------------------------------------------
*/
var currentSheet, doc = window.document, activators = {
onhover:{on:'onmouseover', off:'onmouseout'},
onactive:{on:'onmousedown', off:'onmouseup'}
}
function parseStylesheets() {
//window.alert("hi");
var sheets = doc.styleSheets, l = sheets.length;
for(var i=0; i<l; i )
parseStylesheet(sheets[i]);
}
function parseStylesheet(sheet) {
if(sheet.imports) {
try {
var imports = sheet.imports, l = imports.length;
for(var i=0; i<l; i ) parseStylesheet(sheet.imports[i]);
} catch(securityException){}
}
try {
var rules = (currentSheet = sheet).rules, l = rules.length;
for(var j=0; j<l; j ) parseCSSRule(rules[j]);
} catch(securityException){}
}
function parseCSSRule(rule) {
var select = rule.selectorText, style = rule.style.cssText;
if(!(/(^|\s)(([^a]([^ ] )?)|(a([^#.][^ ] ) )):(hover|active)/i).test(select) || !style) return;
var pseudo = select.replace(/[^:] :([a-z-] ).*/i, 'on$1');
var newSelect = select.replace(/(\.([a-z0-9_-] ):[a-z] )|(:[a-z] )/gi, '.$2' pseudo);
var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
var affected = select.replace(/:hover.*$/, '');
var elements = getElementsBySelect(affected);
currentSheet.addRule(newSelect, style);
for(var i=0; i<elements.length; i )
new HoverElement(elements[i], className, activators[pseudo]);
}
function HoverElement(node, className, events) {
if(!node.hovers) node.hovers = {};
if(node.hovers[className]) return;
node.hovers[className] = true;
node.attachEvent(events.on,
function() { node.className = ' ' className; });
node.attachEvent(events.off,
function() { node.className =
node.className.replace(new RegExp('\\s ' className, 'g'),''); });
}
function getElementsBySelect(rule) {
var parts, nodes = [doc];
parts = rule.split(' ');
for(var i=0; i<parts.length; i ) {
nodes = getSelectedNodes(parts[i], nodes);
} return nodes;
}
function getSelectedNodes(select, elements) {
var result, node, nodes = [];
var classname = (/\.([a-z0-9_-] )/i).exec(select);
var identify = (/\#([a-z0-9_-] )/i).exec(select);
var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-] /i, '');
for(var i=0; i<elements.length; i ) {
result = tagName? elements[i].all.tags(tagName):elements[i].all;
for(var j=0; j<result.length; j ) {
node = result[j];
if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b'
classname[1] '\\b').exec(node.className)))) continue;
nodes[nodes.length] = node;
}
} return nodes;
}
</script>