我搜索一种方法来确定页面元素的真实可见颜色。如果我使用JQuery,我可以执行以下操作:
$('#foo').css('background-color');
但是,#foo
的背景颜色可能会返回“透明”,即使其中一位父母宣布了彩色背景。那么,我如何获得最终用户可见的正确颜色(包括半透明度/ RGBA)?
我在Firefox 5中使用Selenium2 Java API。也许有一种没有JQuery的方法。涉及屏幕截图可能吗?
我改写并扩展了问题:Get dominating color of a specific area in an image: Color Query for Web Page Elements
答案 0 :(得分:4)
您需要遍历树以找到具有background-color
的元素,我所做的一种方法就是这样(其中textureEl
是您要检查的元素):
bgcolor = $(textureEl).css('background-color');
if (isTransparent(bgcolor)){
$(textureEl).parents().each(function(){
if (!isTransparent($(this).css('background-color'))){
bgcolor = $(this).css('background-color');
return false;
}
});
}
和
function isTransparent(bgcolor){
return (bgcolor=="transparent" || bgcolor.substring(0,4) == "rgba");
}
但请注意,我的isTransparent
函数将任何非100%不透明度值标记为透明,如果您不想这样,则重新定义如何处理rgba
颜色。
这当然也没有考虑到background-image
,但由于你的问题没有提到它们,我的申请也没需要考虑它们,因此没有任何东西可以检查图像