从CSS SelectorText可靠地删除“:hover /:focus”

时间:2019-01-29 14:08:06

标签: javascript css

我正在尝试编写一些自动化测试,并且对于某些元素,使用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();
    }
}

我实际上已经尝试过了,它的工作还可以,直到遇到如下选择器:

testdiv>:hover

testdiv>:hover>#testdiv2

使用上述代码删除“:hover”后,选择器将无效。

对此有什么防弹方法?

0 个答案:

没有答案