Что-то забыл про тему. Итак мои варианты.
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);
Оба эти подхода, кстати, не академические, и вполне себе работают в боевых условиях.