Обычно я получаю это из возвращаемого значения toString (). Он работает в элементах DOM с разным доступом:
var a = document.querySelector('a');
var img = document.createElement('img');
document.body.innerHTML += '<div id="newthing"></div>';
var div = document.getElementById('newthing');
Object.prototype.toString.call(a); // "[object HTMLAnchorElement]"
Object.prototype.toString.call(img); // "[object HTMLImageElement]"
Object.prototype.toString.call(div); // "[object HTMLDivElement]"
Затем соответствующий фрагмент:
Object.prototype.toString.call(...).split(' ')[1].slice(0, -1);
Он работает в Chrome, FF, Opera, Edge, IE9 + (в более старых версиях IE он возвращает «[object Object]»).
element.nodeName.match(/\bTBODY\b/i)
иelement.nodeName.toLowerCase() == 'tbody'
т. Д.