Показать сообщение отдельно
  #20 (permalink)  
Старый 14.05.2010, 11:57
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Что-то забыл про тему. Итак мои варианты.

1. С addEventListener всё просто, вытаскиваем его у любого элемента и вызываем в контексте window
document.createElement('div').addEventListener.call(window, 'resize', fn, false);



2. С глобальными функциями идеей многие тоже прониклись. Создаём iframe и берём оттуда. Идея проста, реализация сложней.

Во-первых, я уже как-то писал, IE не создает js-контекст на странице, если там нет ни одного скрипта. Т.о. в iframe нужно написать хотябы <body onload=""></body>

Во-вторых, во всех браузерах все эти операции с iframe'ом синхронны, а в Опере, как всегда, всё наоборот, там нужно ждать onload (при этом не во всех браузерах он срабатывает).

В-третьих, после уничтожения iframe (зачем нам его держать в DOM'е?) IE через некоторое время убивает добытые функции. Мне помогло после добытия функций
setTimeout(function() {}, 3600 * 24 * 1000);



Оба эти подхода, кстати, не академические, и вполне себе работают в боевых условиях.
Ответить с цитированием