Мышь прототипа IE9 и несоответствие мыши - PullRequest
0 голосов
/ 02 июня 2011

IE9 сталкивается со странным поведением, связанным с прототипом скрипта.Здесь я устанавливаю два разных стиля непрозрачности в зависимости от наведения / вывода мыши:

window.onload = function(){
var freccia1 = $($$('.next_button')[0]);
freccia1.setStyle({opacity: '0.20'});       
freccia1.setStyle({filter: 'alpha(opacity=20)'});   
var freccia2 = $($$('.previous_button')[0]);
freccia2.setStyle({opacity: '0.20'});       
freccia2.setStyle({filter: 'alpha(opacity=20)'});
}

Это работает нормально во всех браузерах, включая предыдущие версии IE, но не в IE9, что не снижает прозрачность ..его консоль возвращает мне:

Невозможно получить значение свойства 'setStyle': объект нулевой или неопределенный

кто-нибудь знает почему?спасибо

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Вы не упомянули, какую версию прототипа вы используете. Я столкнулся с похожей проблемой, которая может быть похожа на одной из моих страниц при использовании прототипа 1.5.0 (пожалуйста, не судите). В 1.5.0 функции setStyle и getStyle выполняют браузерную проверку IE, особенно при работе с opacity / alpha (opacity).

/MSIE/.test(navigator.userAgent)

В моем случае setStyle вызывает getStyle ('фильтр'). Replace (). К сожалению, getStyle ('filter') возвращает ноль с IE9, поэтому .replace выдает исключение.

Некоторые соответствующие заметки от команды IE: http://blogs.msdn.com/b/ie/archive/2010/08/17/ie9-opacity-and-alpha.aspx

0 голосов
/ 14 июня 2011

Если вы собираетесь использовать Prototype, вы можете использовать столько же функций, сколько он предлагает, поскольку он учитывает совместимость браузера, поэтому вам не нужно.

Попробуйте это (не проверено):

document.observe('dom:loaded', function() {
    [$$('.next_button')[0], $$('.previous_button')[0]].each(function(ele) {
        $(ele).setStyle({
            opacity: '0.20',
            filter: 'alpha(opacity=20)'
        });
    });
});
...