时间:2016-01-22 07:29 来源: 我爱IT技术网 作者:佚名
本文所分享的知识点是【csshover.htc可以解决ie6下hover不起作用等兼容问题】,欢迎您喜欢我爱IT技术网所分享的教程、知识、经验或攻略,下面是详细的讲解。
csshover.htc可以解决ie6下hover不起作用等兼容问题
<attach event="ondocumentready" handler="parseStylesheets"/>
<script language="JScript">
var currentSheet, doc=window.document, activators={
onhover:{on:'onmouseover', off:'onmouseout'},
onactive:{on:'onmousedown', off:'onmouseup'}
};
function parseStylesheets(){
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>
关于csshover.htc可以解决ie6下hover不起作用等兼容问题的相关讨论如下:
相关问题:css hover.htc文件怎么建啊。怎么解决ie6 hover的...
答:用js解决,最好用jQuery,用它你不必考虑浏览器的兼容性问题。 >>详细
相关问题:为什么csshover.htc无效
答:这个 你应该写一句判断 而不是直接写body { behavior: url("csshover.htc");} 在head 里面直接加一句判断 然后 就解决了!! >>详细
相关问题:CSS hover 在 IE6 中不兼容
答:你是想在h6上定义一个鼠标滑过的样式吧,这样写在ie6下是不兼容的。 建议你这样写:文字 文字这样写: .news-container #articles-container h6 a:hover{ color:#257FBB; } 不知道能不能解决你的问题 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
