javascript-为什么这个元素在cnn.com上不可见?

javascript-为什么这个元素在cnn.com上不可见?,javascript,html,css,Javascript,Html,Css,我正在开发一个chrome扩展,突出显示网页的某些部分。我需要决定哪些元素对用户可见。我当前的筛选逻辑检查以下属性: visibility, opacity, getBoundingClientRect dimensions. 这些属性可以识别大多数情况,但我仍然发现例外。e、 g.cnn.com主页上的ul元素和“快速链接”类 此元素没有使其不可见的明显属性。为什么这个元素不可见?是否有任何方法可以通过编程识别此场景?看起来快速链接容器具有以下属性,这些属性使其子对象对用户不可见: .mor

我正在开发一个chrome扩展,突出显示网页的某些部分。我需要决定哪些元素对用户可见。我当前的筛选逻辑检查以下属性:

visibility, opacity, getBoundingClientRect dimensions.
这些属性可以识别大多数情况,但我仍然发现例外。e、 g.cnn.com主页上的ul元素和“快速链接”类


此元素没有使其不可见的明显属性。为什么这个元素不可见?是否有任何方法可以通过编程识别此场景?

看起来快速链接容器
具有以下属性,这些属性使其子对象对用户不可见:

.more-mega-nav {
    opacity : 0;
    height: 0;
    overflow: hidden;
}

它看起来像是
溢出:隐藏的
是决定因素,因为浏览器会剪辑超出父级
宽度
高度
的任何子内容
快速链接
类应用了什么样的样式?不知道是什么原因导致的是不可能的。您还可以查看z索引值。父元素上的不透明度为零:
。更多mega nav
函数isHidden(el){if(el.tagName='BODY')返回false;else if((el.style['display']='none')|(el.style['visibility']='hidden')返回true;else返回isHidden字段(el.parentNode)}
我以前用过这个。基本上,您可能需要查看父元素,而不仅仅是元素本身,然后向上移动DOM,直到到达body标记。子元素可能可见,但由于父元素而隐藏。代码可能对你没有帮助,因为你正在做一个chrome Extensionno,但是这个想法可能会有帮助。但是有更多的方法可以让元素不可见:
位置:绝对的
,x/y在页面外,
z-index
负数和前面的东西,
transform:scale(0,0)
transform:matrix(0,0,0,0)
剪辑路径
,…@neilsimp1这太基本了,对任何东西都没有用处。