DOMElement是否可渲染?

时间:2012-09-22 07:10:46

标签: javascript html dom

有没有办法检查Element是否可以渲染?

例如,我想要一些方法在true br a div body等上返回html

但要在false head style等上返回script

我尝试if(!el.style) return false;,但似乎headstyle .style

是可能的,还是我应该制作一个可渲染的标记名列表?

3 个答案:

答案 0 :(得分:2)

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

JsFiddle here

function isDefaultVisible(domElement) {
    var el = document.createElement(domElement.tagName);
    return window.getComputedStyle(el,null).getPropertyValue('display') != 'none';
}

答案 1 :(得分:1)

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

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

答案 2 :(得分: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;
}