不,您不能以hover
编程方式设置状态。
正如其他人指出的那样,您可以以编程方式设置一个类,并在悬停或分类时对元素使用相同的样式:
a.hover, a:hover { ... }
你可以用 做类似的事情:focus
,这也是可以编程设置的(demo)。
但是,您似乎只能在应用程序中触发 javascript,而不能更改其源代码的任何部分。在这种情况下,您必须做的是使用 java 脚本更改 css 规则本身。
在测试设置中,您可以将所有:hover
样式更改为另外接受类名的样式:
function allowMockHover() {
// iterate over all styleSheets
for(var i = 0, l = document.styleSheets.length; i < l; i++) {
var s = document.styleSheets[i];
if(s.cssRules == null) continue;
// iterate over all rules in styleSheet
for(var x = 0, rl = s.cssRules.length; x < rl; x++) {
var r = s.cssRules[x];
if(r.selectorText && r.selectorText.indexOf(':hover') >= 0) {
fixRule(r);
}
}
}
}
function fixRule(rule) {
// if the current rule has several selectors, treat them separately:
var parts = rule.selectorText.split(',');
for(var i = 0, l = parts.length; i < l; i++) {
if(parts[i].indexOf(':hover') >= 0) {
// update selector to be same + selector with class
parts[i] = [ parts[i], parts[i].replace(/:hover/gi, '.mock-hover') ].join(',');
}
}
// update rule
rule.selectorText = parts.join(',');
}
演示