![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
AKS, закономерно-то оно закономерно... но в чем же тайное предназначение этой закономерности?
Разве нормально (с точки зрения JS-разработчика), что
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
| JSman |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 279 Регистрация: 10.7.2006 Репутация: нет Всего: 4 |
ребят, я наверное новичок, но сравнение указателей на объекты дело очень противоречивое. идентичность объектов сравнивется по наличию свойств, например. ==, === - не критерий.
указатели на объекты по-разному устроены в различных браузерах. поэтому и получаются разные значения при сравнении. |
|||
|
||||
| AKS |
|
||||||||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
SelenIT,
Вы мой, теперь уже предпоследний пост не прочитали (а жаль - я так старался целый день, гнул свои выпрямленные расческой извилины ;) ). Вот если бы прочитали, то было бы понятно, что нет функции, так как ее Вы не определяли! Вы писали:
? Нет! Попробуйте так:
Добавлено @ 16:36 JSman,
А мы, между прочим, давным-давно только про IE беседуем. Присоединяйтесь! Это сообщение отредактировал(а) AKS - 30.10.2006, 16:43 |
||||||||
|
|||||||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
AKS, что обработчики событий глобального window и его одноименного свойства (с вариациями в виде self и т.п.) абсолютно "отвязаны" друг от друга - понятно, спасибо (об это набивали шишки еще 3 года назад). Теперь же меня интересует не академическая, а практическая сторона: не "почему так", а "зачем сделано именно так" (если, конечно, так сделано специально)? Моя интуиция все же упорно требует, чтобы все свойства (включая обработчики событий) объекта окна были доступны по любой ссылке на него - и мозилла с оперой этих моих ожиданий почему-то не обламывают. Хочется постичь логику IE не только в симптомах, но в сути...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| AKS |
|
||||||||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
SelenIT,
Эх, я бы тоже хотел знать зачем так сделано! Сегодня я уже одно предположение высказал:
Надеюсь, теперь кто-нибудь еще что-нибудь расскажет...
А Вы не читали вот здесь ту часть топика, что касается объекта Event в IE? После этого я как-то иначе стал воспринимать этот сложный браузер (хотя и до этого знал, что он не так-то прост и "неуклюж", как принято теперь считать)... Почитайте, если не читали.
А может и не специально. Я вроде бы несколько раз предположил, что может разработчики IE как раз такие "недотепы", что допустили такое в своем браузере. Мало ли, может кто-то запил в момент сдачи проекта ;) - а мы теперь с Вами ломаем голову... ;) |
||||||||
|
|||||||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
AKS, спасибо, обязательно постараюсь "асилить". Ту тему я смотрел, но бегло - теперь понимаю, что надо было перечитывать ее несколько раз до просветления. Объектная модель событий - до сих пор вообще мое слабое место в JS, а уж тонкие нюансы ее реализаций...
...И все же насчет возможной защитной ф-ции разделения обработчиков window и window.window осмелюсь выразить сомнения - маловероятно, что разработчики предусмотрели это, но пропустили "мегафичу" в виде "opener=1; close();"... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
В IE глобальный объект (global) и окно (window) - разные сущности, объединённые в некий global namespace. IE на себе тащит не один скриптовый язык, видимо нужно, чтобы разным языкам комфортно работалось совместно в окне браузера. Может ещё какие причины для разделения были, не знаю, предполагаю только. Но если строго следовать логике EcmaScript, то разница никого не должна волновать, все алгоритмы EcmaScript должны работать так, будто объект один и тот же, как бы его не трогали. Но IE в этом контексте не смог решить некоторые проблемы вроде нумерации свойств глобального объекта плюс есть узкие места, где эта разница начинает влиять, к примеру, те самые "скрипты в атрибутах" или ID элементов, равные свойствам window.
Проблема этого примера
связана со скриптом в аттрибуте, это intrinsic event. Scope chain такого обработчика са-мо-дель-ная во многих браузерах, и везде по-своему. К примеру, там может быть объект document, для элементов форм там может быть и будет сам элемент и т.д., а самое главное не гарантировано то, что на конце цепочки будет глобальное свойство window, а не "текущее window". Как-то ведь надо было для фреймов реализовывать идею ТЕКУЩЕГО ОКНА (window.self или его синоним window.window). Значит, в одиночном окне при встрече IE с intrinsic event, он создаёт scope chain, специально отделяя текущее окно (из html которого с ним пытаются работать) от глобального, то есть идентификатор window - это сокращённая форма window.window. Другой вопрос, что тождественность всё-таки надо было реализовать правильно, в одиночном окне ссылки должны бы вести в одно место... Зачеркнул. Не о том это я, намешал всё в кучу, тут всё-таки особенность именно в body. Буим думать дальше. Это сообщение отредактировал(а) Zeroglif - 30.10.2006, 20:04 |
|||
|
||||
| AKS |
|
||||||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Zeroglif,
Так ведь они ведут в "одно место", разве нет? А где вообще на этой почве возникают какие-либо конфликтные ситуации? Или проблема только в том, что некто Вася Пупкин не смог реализовать какой-нибудь такой вот "перл":
? SelenIT,
А я не ошибаюсь, что понравившаяся Вам Opera 9 позволяет закрыть окно вообще без opener'а? Если не ошибся, то чего же ждать от "старика"? Добавлено @ 19:12 Честно говоря, пусть это все "глюки", но я рад, что все-таки сегодня раскопал закономерность... |
||||||
|
|||||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Эх! Забыл поблагодарить собеседников, которые помогли мне понять window.window в IE! Однако сказывается отсутствие должного воспитания! А благодарить ведь есть за что - мне эта alert(this===window/* false */) да-а-авно покоя не давала, и здесь вдруг раз - все "прояснилось"... ;)
Так что спасибо, SelenIT, Zeroglif! |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
AKS, спасибо и Вам, также присоединяюсь к благодарностям Zeroglifу, и отдельное спасибо автору темы, уважаемому 12345c!
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
И я благодарю автора темы - спасибо еще и за то, что не "зарезали" оффтоп! Эх, какой здесь простор для бесконтрольной мозговой деятельности, время от времени возникающей в моей голове! ;) SelenIT, Zeroglif! Снова обращаюсь к вам! Мне бы очень хотелось вот здесь написать маленькую, о-о-очень маленькую заметку на эту текущую тему (буквально два-три абзаца). Так вот посоветуйте - как представить все это (я имею ввиду window!==window.window). Как недоработку или же как особенность браузера? Сами понимаете - хотелось бы "похвастаться", написав, что мы тут с вами узнали где и в какое "окно" мы "лезем" ;). Хотя если хоть один из вас не проявит интерес вот к этому сообщению, то я буду считать, что этой темой не стоит "хвастаться". Опять же буду расценивать это, как помощь с вашей стороны. |
|||
|
||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Лично я для себя точно ничего не выяснил, мне не открылось: a) почему такой своеобразный this в body.onload и связано ли это с тем, что он хостит чужой обработчик? б) почему криво реализована тождественность и есть ли смысл в такой кривости; По пункту а) остаётся только гадать. По пункту б) я чирканул письмецо одному из разрабов JScript (E.Lippert), но он так давно этим не занимается, что может легко забыть ответить. |
|||
|
||||
| AKS |
|
||||||||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Zeroglif,
Да, я тоже вот сейчас "отдышался", пришел в "себя", и понял - рано пока "шорох" подымать...
Ого, вселяет надежду...
Ну-у-у, значит не судьба! Будь что будет, от добра добра не ищут...
А что, вроде бы написано же у них, что хостит? Я пока про intrinsic events хорошенько почитаю (раньше-то не читал!). Получается так, что каждая функция в аттрибуте создается вариантом, с использованием конструктора Function? Может это накладывает какой отпечаток? |
||||||||
|
|||||||||
| WingedFox |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 31.10.2006 Репутация: нет Всего: нет |
Я бы сказал, что это ошибка проектирования в бОльшей мере.
Или попытка как-то закрыть дырку с отсутствием глобального объекта до окончания загрузки. Об этом говорит такой эксплойт:
http://secunia.com/advisories/15546/ |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
WingedFox,
Вот, пожалуйста! Еще один вариант объяснения поведения IE. А ведь действительно, может же быть такое поведение результатом "наложения заплаток" на движок. А как раньше было с этими "окнами" в IE? "Раньше" - это я имею ввиду IE4, например. Я его даже издалека не видел... Это сообщение отредактировал(а) AKS - 31.10.2006, 13:05 |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |