我正面临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
有谁知道为什么?谢谢
答案 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