Javascript 获取文档';背景色
默认情况下,大多数web浏览器将页面呈现为白色背景。然而,这在某种程度上是用户可自定义的,并且某些浏览器是不同的。因此,我想找到一种方法,通过CSS或JavaScript,找出页面的背景颜色。Mozilla网站上的文档表明可以使用document.bgColor,其默认值为白色。它还建议不要使用它,因为它已被弃用。但是这些文档似乎与观察到的行为相冲突:如果页面没有CSS来更改document.bgColor,那么document.bgColor是一个空字符串。建议的替代方案也不起作用:我尝试过的所有方法都会给我一个空字符串或“透明”,这显然是错误的:我看不到浏览器下的桌面,因此它是不透明的。(顺便说一句,IE11的行为实际上就像Mozilla的文档中说的Firefox一样。想想看。) 我想创建一个html列表元素(Javascript 获取文档';背景色,javascript,html,css,colors,Javascript,Html,Css,Colors,默认情况下,大多数web浏览器将页面呈现为白色背景。然而,这在某种程度上是用户可自定义的,并且某些浏览器是不同的。因此,我想找到一种方法,通过CSS或JavaScript,找出页面的背景颜色。Mozilla网站上的文档表明可以使用document.bgColor,其默认值为白色。它还建议不要使用它,因为它已被弃用。但是这些文档似乎与观察到的行为相冲突:如果页面没有CSS来更改document.bgColor,那么document.bgColor是一个空字符串。建议的替代方案也不起作用:我尝试过的
),其背景色与文档的背景色匹配。这可能吗?(我想你可能会问:如果我想让它与背景匹配,我想要的不是“透明”的吗?不。我想让它掩盖其他元素。为什么?因为我正在制作一个自动建议的东西。)
编辑:有两个人明智地建议我添加一个例子,这样我就可以清楚地知道我到底在说什么。根据我得到的答案,这两个人是绝对正确的。我在其中一个答案的评论中添加了一个指向小提琴的链接,现在我在这里添加它:
如果
元素是
元素的直接后代,则可以使用css
关键字
由于OPs帖子上的评论太长,我建议您尝试以下内容:
window.getComputedStyle(document.body)['backgroundColor'])
autosuggest在未设置背景色的页面(如空白页面)上正确显示的用例应通过将白色设置为ul
的默认背景色来覆盖。如果你想把可能的背景图像也考虑进去,问题就更大了
请注意,html
也可以有背景色
,并且主体
的大小可能会受到限制,无法覆盖整个视口。看这支笔:
这也说明,如果你的身体真的是透明的,你希望在浏览器后面看到你的桌面是错误的。编辑:Jan Turoň发现了一种使用CSS2系统颜色的方法;请听他的回答。请注意,系统颜色已弃用,
window
是默认的背景色
根据关于突出显示文本背景颜色的回答,这似乎是不可能的;相关问题也是一个性质非常相似的特定于浏览器的选择:
凯伊多:
我想说你不能
getComputedStyle(yourElement,::selection')。backgroundColor和getComputedStyle(yourElement,::-moz selection')。backgroundColor将作为默认值返回透明,浏览器不会覆盖os的默认值。
(值得一提的是,如果将其设置为透明,默认操作系统的值将被覆盖)
我不认为浏览器可以访问操作系统的默认首选项,如果他们这样做了,他们可能不会让任何网站如此轻松地访问它
建议使用画布元素对像素颜色进行采样,但不幸的是,这似乎不起作用;在Chrome中,未设置像素的颜色将返回0,0,0,0。它提供了一个使用chrome.tabs
的潜在解决方案,但这仅适用于chrome扩展
我能想到的唯一可能是使用类似于“截屏”的方法对页面进行“截屏”,并在页面上采样一个空像素,但不能保证该库在未设置的背景下正常运行。
函数getBackground(jqueryElement){
//当前元素的背景色是否已设置?
var color=jquerylement.css(“背景色”);
如果(颜色!=“rgba(0,0,0,0)”){
//如果是,则返回该颜色
返回颜色;
}
//如果不是:你在身体元素吗?
if(jqueryElement.is(“主体”)){
//返回已知的“false”值
返回false;
}否则{
//使用父项调用getBackground
返回getBackground(jqueryElement.parent());
}
}
$(函数(){
警报(getBackground($(“#目标”));
document.getElementById(“ul”).style.backgroundColor=getBackground($(“#目标”);
});代码>
我想知道这里的背景颜色是红色
您可以使用-请注意,这些在CSS3中已被弃用,建议改用外观属性
ul{背景色:背景;}
/*这应该是桌面背景*/
ul{background color:Window;}/*这是浏览器背景*/
这似乎解决了另一个问题?在Chrome中的空白页面上:Window.getComputedStyle(document.body)[“background color”]“rgba(0,0,0,0)”
@guest271314目标是识别未设置页面的背景色;也就是说,客户端使用的浏览器的默认背景色。人们可以整天为一个假想的问题写假想的答案——这当然让电力公司感到高兴。但是,作为一个更好、更常见的选择,您可以简单地包含您正在使用的标记,并将其转化为一个具体的问题。这是行不通的。由于浏览器忙着假装主体是透明的,列表继承了这一点,并且也是透明的。“不起作用。由于浏览器忙着假装主体是透明的”,您能创建一个JSFIDLE来演示吗?是
元素backg吗
window.getComputedStyle(document.body)['backgroundColor'])