Определение, является ли объект <div>или окном - PullRequest
1 голос
/ 17 ноября 2010

насколько я вижу, в JavaScript можно проверить, что определенный объект на самом деле является элементом div:

if (element.constructor  == HTMLDivElement) {
  //...
}

Как я могу применить аналогичную проверку, чтобы увидеть, является ли элемент окном? Проверка на DOMWindow не работает, такая функция кажется неопределенной.

Ответы [ 4 ]

5 голосов
/ 17 ноября 2010

Атрибут «tagName» элемента DOM скажет вам, что это за элемент DOM.Я не знаю ни одного хорошего способа проверить, относится ли ссылка к экземпляру «окна», кроме как с помощью утки.

Вместо проверки, чтобы увидеть, что ссылка является , возможно, вам следует проверить, что объект может сделать или, по-видимому, способен сделать.Что именно вы пытаетесь достичь, определяя природу объекта?

Поскольку объекты Javascript настолько податливы, даже если вы определите, что объект является экземпляром <div> DOM, он не обязательно расскажет вам все об этом.потому что код мог изменить свойства объекта до неузнаваемости.

2 голосов
/ 17 ноября 2010

Из источника jQuery приходит одно решение:

// A crude way of determining if an object is a window
function isWindow ( obj ) {
    return obj && typeof obj === "object" && "setInterval" in obj;
}
2 голосов
/ 17 ноября 2010

Если вам нужно только проверить, является ли объект текущим окном браузера (в отличие от другого окна браузера), вы можете сделать это очень легко, просто проверив идентичность с объектом window (если у вас нет ').не переиграл).

if (obj === window) {
    // it's your window
} else if (obj.nodeName && (obj.nodeName.toLowerCase() === 'div')) {
    // it's a div
} else {
    // it's something else
}
0 голосов
/ 17 ноября 2010

С jquery это должно быть так же просто, как If ($ ('div'). Length == 0) {// их нет divs} else {// их есть div на странице}

Вы также можете проверить, существует ли идентификатор или класс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...