我正在尝试编写一些自动化测试,并且对于某些元素,使用css选择器“:hover /:focus”,很明显,我无法使用纯javascript模拟悬停状态。 因此,经过一番搜索,我遇到了这个问题: How do I simulate a mouseover in pure JavaScript that activates the CSS ":hover"?
答案之一就是这个片段:
simulateCssEvent = function(type){
var id = 'simulatedStyle';
var generateEvent = function(selector){
var style = "";
for (var i in document.styleSheets) {
var rules = document.styleSheets[i].cssRules;
for (var r in rules) {
if(rules[r].cssText && rules[r].selectorText){
if(rules[r].selectorText.indexOf(selector) > -1){
var regex = new RegExp(selector,"g")
var text = rules[r].cssText.replace(regex,"");
style += text+"\n";
}
}
}
}
$("head").append("<style id="+id+">"+style+"</style>");
};
var stopEvent = function(){
$("#"+id).remove();
};
switch(type) {
case "hover":
return generateEvent(":hover");
case "stop":
return stopEvent();
}
}
我实际上已经尝试过了,它的工作还可以,直到遇到如下选择器:
使用上述代码删除“:hover”后,选择器将无效。
对此有什么防弹方法?