Показать сообщение отдельно
  #2 (permalink)  
Старый 12.03.2017, 03:50
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Пока что есть такое:

function isDOMElement(target) {
	try {
		target.parentNode.insertBefore(target, target);
	} catch (e) {
		try {
			var parent = document.createDocumentFragment();
			parent.appendChild(target);
		} catch (e) {
			return false;
		}
		parent.removeChild(target);
		return true;
	}
	return true;
}


var elem1 = document.createElement("A");
var elem2 = document.documentElement;
var elem3 = {};
alert( [isDOMElement(elem1), isDOMElement(elem2), isDOMElement(elem3)] ); // true,true,false


Можно ли как-то проще?
Ещё кроссбраузерность под вопросом, у меня в опере true, true, false

upd: разумеется, важно никак не менять структуру DOM, отсюда фокусы с insertBefore и appendChild/removeChild

Последний раз редактировалось exec, 12.03.2017 в 03:54.
Ответить с цитированием