IE9 原型 mouseover 和 mouseout 不匹配
我在处理原型脚本时遇到了 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 中则不然,因为它不会降低不透明度。它的控制台返回给我:
< br> 无法获取属性“setStyle”值:对象 null 或未定义
有谁知道为什么?谢谢
I'm facing a strange behaviour by IE9 dealing with a prototype script.
Here I'm setting two different opacity styles depending on mouseover / out:
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)'});
}
This is working fine in all browsers, including previous IE versions, nut not in IE9 which doesn't low the opacity..its console returns me:
Not possible to get the property 'setStyle' value: object null or undefined
does anyone know why ? thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您要使用 Prototype,您不妨使用它提供的尽可能多的功能,因为它考虑了浏览器兼容性,因此您不必这样做。
试试这个(未经测试):
If you're going to use Prototype, you might as well use as much functionality as it offers since it takes browser compatibility into consideration so you don't have to.
Try this (untested):
您没有提到您正在运行哪个版本的原型。我在使用原型 1.5.0 的一个页面上遇到了类似的问题,可能与此类似(请不要判断)。在 1.5.0 中,setStyle 和 getStyle 函数对 IE 进行浏览器检查,特别是在处理 opacity/alpha(opacity) 时。
就我而言,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
You didn't mention which version of prototype you are running. I ran into a similar problem that may be similar on one of my pages using prototype 1.5.0 (please don't judge). In 1.5.0 the setStyle and getStyle functions do a browser check for IE specifically when dealing with opacity/alpha(opacity).
In my case, setStyle calls getStyle('filter').replace(). Unfortunately getStyle('filter') returns null with IE9 so .replace throws an exception.
Some relevant notes from the IE team: http://blogs.msdn.com/b/ie/archive/2010/08/17/ie9-opacity-and-alpha.aspx