Элементарный вопрос
if (!handler.guid) {
когда знак возклицания в условие ставится это имеется ввиду что не равно = 0, undefined , null ? правильно понимаю и ещё логику этого условие разшифруйте)) if (elem.setInterval && ( elem != window && !elem.frameElement ) ) { как я его вижу : елементу задается setInterval и этот элемент не равен window , а чему он может быть равен?)) и элемент не фрайм. |
1.
! - отрицание. if(!a) -> if(a == false) 2. скорее всего elem должен быть window, но раз не текущим и не фрейма, то результатом window.open() |
Aetae,
а что значит результатом window.open()? |
Rise,
кароче просто не понимаю этого выражения != window где потрогать можно этот чисто window ? :) |
Rise,
я как-раз этим и занимаюсь ) |
if в JavaScript - это языковая конструкция которая выполняет определенные действия если соблюдаются условия
Условия задаются с помощью «()» круглых скобок Любые операции заданные в этих круглых скобках приводятся к логическому значению истина (true) или лож (false) Если условие заданное в скобках истинное (true) то выполняется блок кода заключенный в «{}» фигурные скобки В условии используются логические операторы &&, !, !=, .... логические операторы возвращают логическое значение т.е. возвращают true или false в зависимости от условий условия задаются слева от оператора и справа т.е. (elem.setInterval && ( elem != window && !elem.frameElement ) ) это выражение с несколькими логическими операторами по шагам 1. (elem.setInterval && ( elem != window && !elem.frameElement ) ) 2. ( true && ( elem != window && !elem.frameElement ) ) 3. ( true && ( elem != window && !elem.frameElement ) ) 4. ( true && ( true && !elem.frameElement ) ) 5. (true && ( true && !false) ) 6. (true && ( true && true ) 7. ( true && true ) 8. ( true ) elem.setInterval - приводится к истине если у переменной "elem" есть свойство или метод "setInterval" elem != window - приводится к истине если переменная "elem" не равна переменной window !elem.frameElement - приводится к истине если у переменной "elem" нет свойства или метода "frameElement" |
Цитата:
!elem.frameElement - приводится к истине если у переменной "elem" нет свойства или метода "frameElement", или оно == false. elem = {frameElement:0}; alert(!elem.frameElement) alert('frameElement' in elem) |
Пояснение к тому что я имел ввиду изначально:
<script> var elem = window; alert([ ' Normal window:', 'elem.setInterval:\t\t' + !!elem.setInterval, 'elem != window:\t\t' + (elem != window), '!elem.frameElement:\t' + !elem.frameElement, (elem.setInterval && ( elem != window && !elem.frameElement ) ) ].join('\n')) </script> <input type="button" onclick=" var elem = window.open('about:blank'); alert([ ' New window:', 'elem.setInterval:\t\t' + !!elem.setInterval, 'elem != window:\t\t' + (elem != window), '!elem.frameElement:\t' + !elem.frameElement, (elem.setInterval && ( elem != window && !elem.frameElement ) ) ].join('\n')) " value="click me"> <iframe src="about:blank" onload=" var elem = this.contentWindow; alert([ ' Frame window:', 'elem.setInterval:\t\t' + !!elem.setInterval, 'elem != window:\t\t' + (elem != window), '!elem.frameElement:\t' + !elem.frameElement, (elem.setInterval && ( elem != window && !elem.frameElement ) ) ].join('\n')) " style="position:absolute;top:-800px;"> |
Часовой пояс GMT +3, время: 15:09. |