Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript opera中的raphaeljs鼠标事件bug?_Javascript_Svg_Raphael - Fatal编程技术网

Javascript opera中的raphaeljs鼠标事件bug?

Javascript opera中的raphaeljs鼠标事件bug?,javascript,svg,raphael,Javascript,Svg,Raphael,我有非常简单的svg:只有一个矩形需要在悬停时设置动画 以下是我现在拥有的: var paper = Raphael('paper', 50, 50); var rect = paper.rect(0, 0, 20, 20).attr({ 'width': 20, 'height': 20, 'fill': "red", 'stroke-width': 0, }).data('x', 'y'); rect.mouseover(function() {

我有非常简单的svg:只有一个矩形需要在悬停时设置动画

以下是我现在拥有的:

var paper = Raphael('paper', 50, 50);

var rect = paper.rect(0, 0, 20, 20).attr({
    'width': 20,
    'height': 20,
    'fill': "red",
    'stroke-width': 0,
}).data('x', 'y');


rect.mouseover(function() {
    this.toFront();
    this.animate({
        'transform': 's2'
    }, 70);
}).mouseout(function() {
   this.animate({
      'transform': 's1'
   }, 50);
});​
看一看行动

问题是:该代码在Opera(我相信是IE)中无法正常工作,似乎mouseout事件没有启动。这是Raphael、Opera或我的代码中的某种错误吗?

您需要在mouseover()和mouseout()函数中的每个.animate()调用中添加一个.stop(),因为它们在动画过程中相互干扰

rect.mouseover(function() {
    this.toFront();
    this.stop().animate({
        'transform': 's2'
    }, 70);
}).mouseout(function() {
   this.stop().animate({
      'transform': 's1'
   }, 50);
});​
也为了它的缘故,我会尽量使出和超过动画的同时。只是为了观赏。但那只是我

编辑: 显然,
this.toFront()
导致Opera无法跟踪DOM元素。正如您所说,您需要toFront(),您可以通过使用$.css()来交换它,以实现相同的效果(可能)


抱歉,修复了它,因为stop()需要在webkit中的animateworks前面,但是,不幸的是,在操作中仍然不能正确工作使用toFront移动东西意味着删除元素并将其插入DOM中,此时Opera无法跟踪元素的焦点(不确定是否有说明从DOM中删除元素时焦点应该发生什么的规范)。不管怎样,这就是原因。避免使用toFront,它应该可以工作。是的,没有toFront()它工作得很好,但我有点需要它。那么,有什么解决方法吗?而不是toFront()[虽然我不确定这具体是什么作用)你可以使用我在上面编辑的东西
$(this).css('zIndex', 9999);