图像是否可见
Is the image visible or not
测试我要使用代码抓取的图像是否对用户可见
:
-
纯javascript -请不要建议使用jQuery或其他框架
-
我只对
display:none
和visibility:hidden
感兴趣,但不透明度等当然是受欢迎的
代码:下面(取自这里)不工作在我的DEMO
问题:你能帮助使工作或建议一个更好的脚本吗?
版本
function isVisible(obj){
if (obj == document) return true;
if (!obj) return false;
if (!obj.parentNode) return false;
if (obj.style) {
if (obj.style.display == 'none' || obj.style.visibility == 'hidden') return false;
}
else if (window.getComputedStyle) { // MY BAD - I PUT THE INCORRECT ELSE HERE
var style = window.getComputedStyle(obj, "");
if (style.display == 'none' || style.visibility == 'hidden') return false;
}
else if (obj.currentStyle) {
var style = obj.currentStyle;
if (style['display'] == 'none' || style['visibility'] == 'hidden') return false;
}
return isVisible(obj.parentNode);
}
版本B function isVisible1(obj) {
var cnode = obj;
try {
while(cnode) {
if (cnode.nodeName) {
if (cnode.nodeName.toLowerCase()=="body") {
return true;
}
}
if (cnode.style.display=="none" || cnode.style.visibility=="hidden") {
return false;
}
cnode = cnode.parentNode;
}
return true;
}
catch(ex) {return false;}
}
尝试将计算的样式条件置于样式检查的else之外。我们想检查内联样式和计算样式(来自样式表)
改变:
else if (window.getComputedStyle) {
:
if (window.getComputedStyle) {
小提琴分叉:http://jsfiddle.net/MXgbh/1/
相关文章:
- 是否可以仅通过jQuery将图像替换为用户动态选择的另一个图像
- 如何检查图像是否已加载
- 检测图像URL是否已损坏JQUERY
- JavaScript:是否可以将图像/信息附加到数组项
- 在检索数据时是否可以停止图像加载请求
- 是否可以在jquery中使用拖动滑块在4个图像之间滑动
- HTML/JavaScript拖动&Drop-是否可以使重影图像*NOT*看起来'冲洗掉'
- Javascript:检测文件读取器中是否有图像
- Javascript检查图像是否在数组中
- 是否可以创建一个画布来提取图像数据,而无需实际渲染画布
- fabric.js:使用 Image.set() 调整图像大小是否会降低图像质量
- 交换 img src 或显示/隐藏多个图像是否更快
- 检测 jpg 图像是否正确加载
- jquery .width(value) 是否调整容器内图像的大小
- 动态图像加载是否会减少服务器过载
- jQuery或Javascript检查是否加载了图像
- 检查图像是否正确加载了Quit
- 有没有一种方法可以判断图像src是否在javascript内部返回null
- 当只给定宽度或高度时,是否所有浏览器都按比例缩放图像
- 是否可以在生成器中为图像添加权重