Javascript setInterval不在Opera中工作

Javascript setInterval不在Opera中工作,javascript,opera,Javascript,Opera,我试图使一个元素闪烁(通过切换元素的可见性),但无论出于什么原因,它在Opera中都不起作用。在Firefox和Chrome中运行良好 这里是一个工作样本的小提琴: 我认为我没有犯任何明显的错误 在歌剧12中测试 代码: 我想你的处境很尴尬 当涉及到用户界面时,依赖图形对象的状态来了解视图的状态不是一个好的实践。换句话说,您不想在HTML元素中“读取”视图的状态,而是在一个变量或一组称为视图模型的变量中 我建议您以这种方式重写代码,我认为这是一个很好的解决bug的机会: var blinker;

我试图使一个元素闪烁(通过切换元素的可见性),但无论出于什么原因,它在Opera中都不起作用。在Firefox和Chrome中运行良好

这里是一个工作样本的小提琴:

我认为我没有犯任何明显的错误

在歌剧12中测试

代码:


我想你的处境很尴尬

当涉及到用户界面时,依赖图形对象的状态来了解视图的状态不是一个好的实践。换句话说,您不想在HTML元素中“读取”视图的状态,而是在一个变量或一组称为视图模型的变量中

我建议您以这种方式重写代码,我认为这是一个很好的解决bug的机会:

var blinker;
function blink(elem) {
    clearInterval(blinker);

    var visible = false;
    blinker = setInterval(function() {
        visible = !visible;
        $(elem).css('visibility', visible ? 'visible' : 'hidden');
    }, 500);
}

正如@nevermind在上面的评论中指出的,问题不在于Opera。问题在于jsFiddle iframe。注意,jsFiddle仍然处于alpha阶段。因此必然会有一些怪癖。希望开发人员能尽快修复它


尽管如此,您提供的代码实际上并不需要jQuery,而且
setInterval
在Opera12中工作得非常好。例如,这就是我所做的,它很好地闪烁着:

它在JSFIDLE之外工作(opera 12.15,Win7;JQuery 2.0.2)。这是opera dragonfly的脚本部分抛出的错误:(在JQuery中,就在JSFIDLE中)。然而,在JSFIDLE之外(也离线测试),代码运行良好:。。。奇怪的是,一些与框架有关的东西,我希望一些大师会有解释。:)注意-框架有问题,定义:)谢谢你的信息@nevermind:你不知道为什么它在InternetExplorer中不工作吗?同样的代码。至少在IE10中,在JSFIDLE iframes之外,它仍然在工作。。。我也很好奇
var blinker;
function blink(elem) {
    clearInterval(blinker);

    var visible = false;
    blinker = setInterval(function() {
        visible = !visible;
        $(elem).css('visibility', visible ? 'visible' : 'hidden');
    }, 500);
}