测试我是否要使用代码抓取的图片对用户可见
限制:
普通的javascript - 请不要建议使用jQuery或其他框架
我只对display:none
和visibility:hidden
感兴趣,但不透明度当然是受欢迎的
问题:您能帮忙制作更好的剧本吗?
版本A
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;}
}
答案 0 :(得分:1)
尝试将计算出的样式条件放在样式检查的else之外。我们想检查内联样式和计算样式(来自样式表。)
更改:
else if (window.getComputedStyle) {
要:
if (window.getComputedStyle) {