Почему в окне IE "window.location instanceof Location" имеет значение false? - PullRequest
1 голос
/ 08 января 2011

Я тестировал следующий код в FF 3.6 и IE 8. Первые предупреждения true, последние предупреждения false. Почему это так и как я могу добиться одинакового поведения в обоих браузерах? Спасибо!

<!DOCTYPE html>
<html>
    <head>
        <script>
            alert(window.location instanceof Location);
        </script>
    </head>
    <body>
    </body>
</html>

Ответы [ 2 ]

1 голос
/ 08 января 2011

РЕДАКТИРОВАТЬ: Что касается комментария по вашему вопросу, похоже, что вам нужно проверить разницу между элементом 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]] имени свойства.

0 голосов
/ 08 января 2011
location.constructor == Location

Работает в IE и Firefox; не работает в Chrome. (В Chrome нет объекта Location. Однако он будет работать только в том случае, если вы проверяете местоположение из того же окна, в котором запущен ваш скрипт.

Что вы действительно пытаетесь сделать?

...