IE9原型鼠标悬停和鼠标输出不匹配

时间:2011-06-01 20:26:46

标签: internet-explorer-9 prototypejs mouseover

我正面临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'值:object null或undefined

有谁知道为什么?谢谢

2 个答案:

答案 0 :(得分:0)

如果您打算使用Prototype,您可以使用尽可能多的功能,因为它需要考虑浏览器兼容性,因此您不必这样做。

试试这个(未经测试):

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

答案 1 :(得分:0)

您没有提到您正在运行的原型版本。我在使用原型1.5.0的一个页面上遇到了类似的问题(请不要判断)。在1.5.0中,setStyle和getStyle函数在处理不透明度/ alpha(不透明度)时专门对IE进行浏览器检查。

/MSIE/.test(navigator.userAgent)

在我的例子中,setStyle调用getStyle('filter')。replace()。不幸的是,getStyle('filter')在IE9中返回null,因此.replace会抛出异常。

IE团队的一些相关说明:http://blogs.msdn.com/b/ie/archive/2010/08/17/ie9-opacity-and-alpha.aspx