Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取文档';背景色_Javascript_Html_Css_Colors - Fatal编程技术网

Javascript 获取文档';背景色

Javascript 获取文档';背景色,javascript,html,css,colors,Javascript,Html,Css,Colors,默认情况下,大多数web浏览器将页面呈现为白色背景。然而,这在某种程度上是用户可自定义的,并且某些浏览器是不同的。因此,我想找到一种方法,通过CSS或JavaScript,找出页面的背景颜色。Mozilla网站上的文档表明可以使用document.bgColor,其默认值为白色。它还建议不要使用它,因为它已被弃用。但是这些文档似乎与观察到的行为相冲突:如果页面没有CSS来更改document.bgColor,那么document.bgColor是一个空字符串。建议的替代方案也不起作用:我尝试过的

默认情况下,大多数web浏览器将页面呈现为白色背景。然而,这在某种程度上是用户可自定义的,并且某些浏览器是不同的。因此,我想找到一种方法,通过CSS或JavaScript,找出页面的背景颜色。Mozilla网站上的文档表明可以使用document.bgColor,其默认值为白色。它还建议不要使用它,因为它已被弃用。但是这些文档似乎与观察到的行为相冲突:如果页面没有CSS来更改document.bgColor,那么document.bgColor是一个空字符串。建议的替代方案也不起作用:我尝试过的所有方法都会给我一个空字符串或“透明”,这显然是错误的:我看不到浏览器下的桌面,因此它是不透明的。(顺便说一句,IE11的行为实际上就像Mozilla的文档中说的Firefox一样。想想看。)

我想创建一个html列表元素(
),其背景色与文档的背景色匹配。这可能吗?(我想你可能会问:如果我想让它与背景匹配,我想要的不是“透明”的吗?不。我想让它掩盖其他元素。为什么?因为我正在制作一个自动建议的东西。)

编辑:有两个人明智地建议我添加一个例子,这样我就可以清楚地知道我到底在说什么。根据我得到的答案,这两个人是绝对正确的。我在其中一个答案的评论中添加了一个指向小提琴的链接,现在我在这里添加它:


如果
元素是
元素的直接后代,则可以使用
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'])