Проблема может заключаться в том, что оболочка обработчика событий jQuery должна использовать window.event
для извлечения текущего события в IE. Если вы установите обработчик из окна A для события в окне B, сценарий в окне A будет смотреть на окно window.event
, в то время как событие фактически происходит в окне B.
Но могут быть и другие проблемы. Скрипты между окнами и фреймами чреваты трудностями, и jQuery не предназначен для их обхода. Для правильной работы кросс-фрейма в jQuery вам, как правило, понадобится экземпляр jQuery в обоих окнах, и вы должны использовать только соответствующий экземпляр jQuery ($) для взаимодействия с каждым окном.
eta re comment:
ОК, изучив mousewheel
, я не знаю, как ваш код может работать в Firefox (это, конечно, не для меня). Firefox вообще не поддерживает mousewheel
события; вместо этого он поддерживает DOMMouseScroll
события. Также для других браузеров, которые поддерживают mousewheel
, он должен быть привязан к узлу DOM, а не к окну. Итак, я думаю, что вы ищете:
if ('MouseScrollEvent' in window) {
$(document).bind('DOMMouseScroll', function(event) {
return scroll(event.detail*-40);
});
} else {
$(document).bind('mousewheel', function(event) {
return scroll(event.wheelDelta);
});
}
function scroll(d) {
window.scrollBy(-d, 0);
return false;
};
(Однако в WebKit это остановит прокрутку, когда мышь выйдет из горизонтальной области, соответствующей ширине области просмотра. Вы можете предпочесть привязать события к более широкому элементу, например, div, если он заполняет браузер.) *