IE9 原型 mouseover 和 mouseout 不匹配

发布于 2024-11-11 13:48:27 字数 539 浏览 1 评论 0原文

我在处理原型脚本时遇到了 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我一向站在原地 2024-11-18 13:48:27

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

试试这个(未经测试):

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

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):

document.observe('dom:loaded', function() {
    [$('.next_button')[0], $('.previous_button')[0]].each(function(ele) {
        $(ele).setStyle({
            opacity: '0.20',
            filter: 'alpha(opacity=20)'
        });
    });
});
冰火雁神 2024-11-18 13:48:27

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

/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

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).

/MSIE/.test(navigator.userAgent)

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文