Проблема может заключаться в том, что оболочка обработчика событий jQuery должна использовать window.event
для извлечения текущего события в IE. Если вы установите обработчик из окна A в событии в окне B, сценарий в окне A будет смотреть на окно A window.event
, в то время как событие действительно происходит в окне B.
Но может быть больше проблем, чем это , слишком. Скрипты между окнами/кадрами чреваты трудностями, и jQuery специально не предназначен для их работы. Для правильной работы jQuery кросс-фрейма вам обычно понадобится экземпляр jQuery в обоих окнах, и вы должны использовать только соответствующий экземпляр jQuery ($) для взаимодействия с каждым окном.
ета повторно комментарий:
ОК, посмотрев в 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, если он заполняет браузер.)
Я решил использовать рабочую версию, если у вас есть рабочий код, почему возникает вопрос, почему неисправная рабочая версия неисправна ?! – Mohammad