РЕДАКТИРОВАТЬ: Что касается комментария по вашему вопросу, похоже, что вам нужно проверить разницу между элементом DOM и объектом Location.
Возможно, вам лучше будет протестировать элемент DOM с помощью свойства nodeType
.
if( obj.nodeType ) {
// it was a DOM element
}
Затем вы можете проверить различные свойства, если nodeType
не был найден, просто чтобы убедиться, что это location
объект.
if( obj.nodeType ) {
// it was a DOM element
} else if( obj.hostname && obj.pathname ) {
// it was a location object
} else {
// some ERROR
}
Оригинальный ответ:
Это работает для меня в Chrome, Safari, Firefox:
Object.prototype.toString.call(window.location) == '[object Location]';
Я не могу сейчас тестировать в IE.
Это метод, указанный в спецификации ECMAScript Раздел 8.6.2 для получения внутреннего [[Class]]
имени свойства.