Javascript IE8中没有发射原型观察员

Javascript IE8中没有发射原型观察员,javascript,internet-explorer,prototypejs,observer-pattern,Javascript,Internet Explorer,Prototypejs,Observer Pattern,我不知道是什么原因导致IE8忽略了这些观察者。它适用于FF、Chrome(10)和Safari。它从不触及IE8开发者工具中设置的断点 <script type="text/javascript"> //<![CDATA[ var timeoutHolder = null; function displayZoom(id){ window.clearTimeout(timeoutHolder); //if we are coming from

我不知道是什么原因导致IE8忽略了这些观察者。它适用于FF、Chrome(10)和Safari。它从不触及IE8开发者工具中设置的断点

<script type="text/javascript">
//<![CDATA[
    var timeoutHolder = null;
    function displayZoom(id){
        window.clearTimeout(timeoutHolder);  //if we are coming from another hover target, prevent the opacity reset
        if($('mini-main').getOpacity()!=0.4)
            new Effect.Opacity('mini-main',{from:1.0,to:0.4,duration:0.5});
        new Effect.Appear(id,{duration:0.3});
    }
    function resetZoom(id){
        timeoutHolder = window.setTimeout(function(){
            new Effect.Opacity('mini-main',{from:0.4,to:1.0,duration:0.5});
        }, 100);    //gives us 100 ms for user to move onto another target before we reset the opacity
        new Effect.Fade(id,{duration:0.5});
    }
    $$('.mini-target').each(function(target_div){
        target_div.observe('mouseover',function(){
            displayZoom(target_div.id+'-hover');
        });
        target_div.observe('mouseout',function(){
            resetZoom(target_div.id+'-hover');
        });
    });
//]]>
</script>
谢谢,

JD

如果你改变了做事的方式,那会怎么样

$(document).ready(function () {
    $('.mini-target').mouseover(function () {
        displayZoom($(this).attr("id") + '-hover');
    }).mouseout(function () {
        resetZoom($(this).attr("id") + '-hover');
    });
});
当你将鼠标移到每个“小目标”上时,你仍然在引用它,我们将鼠标移到它的末端

这将在IE8中运行

干杯,
Al

如果你改变了做事的方式,那会怎么样

$(document).ready(function () {
    $('.mini-target').mouseover(function () {
        displayZoom($(this).attr("id") + '-hover');
    }).mouseout(function () {
        resetZoom($(this).attr("id") + '-hover');
    });
});
当你将鼠标移到每个“小目标”上时,你仍然在引用它,我们将鼠标移到它的末端

这将在IE8中运行

干杯,
Al

是最黑的黑客。如果您在
mini target
div上设置背景,则该选项有效。我最终使用了一个条件setStyle为IE显示一个gif间隔符。1998年浏览器黑客FTW

if(Prototype.Browser.IE){
     target_div.setStyle({background: 'url("<?php echo Mage::getBaseUrl('media').'spacer.gif'?>")'});
}
if(Prototype.Browser.IE){
target_div.setStyle({background:'url(“”)});
}

如果有人能解释为什么IE需要背景来解雇观察员,我很乐意接受他们的答案。。。可能与hasLayout有关吧?

最黑的黑客。如果您在
mini target
div上设置背景,则该选项有效。我最终使用了一个条件setStyle为IE显示一个gif间隔符。1998年浏览器黑客FTW

if(Prototype.Browser.IE){
     target_div.setStyle({background: 'url("<?php echo Mage::getBaseUrl('media').'spacer.gif'?>")'});
}
if(Prototype.Browser.IE){
target_div.setStyle({background:'url(“”)});
}

如果有人能解释为什么IE需要背景来解雇观察员,我很乐意接受他们的答案。。。可能与hasLayout有关?

我以前遇到过一个案例,其中一组ID名称导致IE中出现Javascript问题

该方案由紧接着连字符
-
的数字组成


请尝试删除数字前的连字符。将
mini-target-1
更改为
mini-target1

我以前遇到过一个案例,其中一组ID名称导致IE中出现Javascript问题

该方案由紧接着连字符
-
的数字组成


请尝试删除数字前的连字符。将
mini-target-1
更改为
mini-target1

observe
没有向隐藏元素开火时,我遇到了这个问题。我要做的就是让这个元素
display:block使用前请遵守
的规定


如果元素最初设置为
display:none
,则当您更改背景图像时,IE8(及以下)可能会自动将css显示属性更改为
block

我遇到了这个问题,当时
observe
没有触发隐藏元素。我要做的就是让这个元素
display:block使用前请遵守
的规定


如果元素最初设置为
display:none
,则当您更改背景图像时,IE8(及以下版本)可能会自动将css显示属性更改为
block

BTW,这是Prototype v1.6.0.3BTW,这是Prototype v1.6.0.3版,您为涉及Prototype的问题提供了jquery解决方案您为涉及Prototype的问题提供了jquery解决方案谢谢Allan,我将尝试一下。我知道以数字开头的ID或类名是非法的,但我没听说过这种变化,但嘿,这是IE,所以一切皆有可能!!谢谢艾伦,我会试试的。我知道以数字开头的ID或类名是非法的,但我没听说过这种变化,但嘿,这是IE,所以一切皆有可能!!