有没有办法检查元素是否可渲染?
例如,我想要一些方法返回true
等br
a
div
body
html
但要返回false
等head
style
script
我试过if(!el.style) return false;
了,但看起来很均匀head
并且style
有.style
有可能还是我应该只列出可呈现的标记名?
有没有办法检查元素是否可渲染?
例如,我想要一些方法返回true
等br
a
div
body
html
但要返回false
等head
style
script
我试过if(!el.style) return false;
了,但看起来很均匀head
并且style
有.style
有可能还是我应该只列出可呈现的标记名?
我想我有一个简单的解决方案。检查创建时有哪些元素display: none
。
function isDefaultVisible(domElement) {
var el = document.createElement(domElement.tagName);
return window.getComputedStyle(el,null).getPropertyValue('display') != 'none';
}
所有元素都可以渲染。这实际上取决于浏览器的默认样式表。有关更多信息,请参阅这篇精彩的文章:
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;
}