3

有没有办法检查元素是否可渲染?

例如,我想要一些方法返回truebr a div body html

但要返回falsehead style script

我试过if(!el.style) return false;了,但看起来很均匀head并且style.style

有可能还是我应该只列出可呈现的标记名?

4

3 回答 3

2

我想我有一个简单的解决方案。检查创建时有哪些元素display: none

JsFiddle在这里

function isDefaultVisible(domElement) {
    var el = document.createElement(domElement.tagName);
    return window.getComputedStyle(el,null).getPropertyValue('display') != 'none';
}
于 2012-09-22T09:30:41.473 回答
1

所有元素都可以渲染。这实际上取决于浏览器的默认样式表。有关更多信息,请参阅这篇精彩的文章:

http://mathiasbynens.be/notes/css-hidden-elements

于 2012-09-22T08:36:50.363 回答
0
function isElementRenderable(el){
    if(el.nodeType != 1) return false;
    if(el instanceof HTMLHeadElement || el instanceof HTMLLinkElement ||
       el instanceof HTMLTitleElement|| el instanceof HTMLMetaElement ||
       el instanceof HTMLBaseElement || el instanceof HTMLStyleElement||
       el instanceof HTMLScriptElement)
    return false;
    return true;
}
于 2012-09-22T08:26:36.110 回答