解决ie6下hover不识别问题

来源:互联网 发布:时光机器软件 编辑:程序博客网 时间:2024/05/19 13:22

终于找到了ie6下二级菜单不识别hover的问题,整理下已被自己和需要的朋友使用~

<attach event="ondocumentready" handler="parseStylesheets" /><script language="JScript">/*** Pseudos - V1.30.050121 - hover & active* ---------------------------------------------* Peterned - http://www.xs4all.nl/~peterned/* (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>

将此代码存为.htc文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>hover</title><style type="text/css">body{ behavior:url("csshover.htc");}ul,li{list-style:none; margin:0; padding:0;}ul li{width:80px; height:30px; line-height:30px;}ul li ul {display:none; padding-left:10px;}ul li:hover ul {display:block;}</style></head><body><div> <ul>  <li><a href="#">一级菜单</a>   <ul>    <li><a href="#">二级菜单</a></li>   </ul>  </li> </ul></div></body></html>


这是测试的html代码~

我上传到资源里以备使用。

原创粉丝点击