测试游标是否在新的raphael元素上没有新的mouseevent

时间:2015-04-20 23:54:10

标签: javascript jquery cross-browser mouseevent raphael

当我使用Raphael.js制作新元素时,如果此元素到达空闲光标下,则不会触发悬停事件(43.0.2311.90)或Internet Explorer(11.0.8)。 Firefox(31.0,32.0.2和37.0.2)按预期工作。

我试图找到是否有办法手动触发测试,检查光标是否在元素上(当元素创建后没有新的mouseevent时),所以我可以补偿这一点。

我想我需要拉斐尔去做测试,因为形状经常是旋转而不是方形。

欢迎其他变通方法。

代码:

<!DOCTYPE html>
<html>
    <head>
        <style>
            .board{
                height: 600px;
                width: 800px;
                border: 1px black solid;
            }
        </style>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js"></script>
        <script> g = typeof g !== "undefined" ? g : {}; </script>
    </head>
    <body>
        <div id="board" class="board"></div>
        <script>
            g.board = Raphael("board",800,600);
            var circle = g.board.circle(50, 40, 10);
                circle.attr({"fill": "blue"});
            circle.hover(function() {
                this.attr({"fill": "yellow"});
                this.animate({"r": 30},1000);
                var circle = g.board.circle(50, 40, 10);
                circle.attr({"fill": "purple"});
                circle.hover(function() {
                    this.attr({"fill": "green"});
                    this.animate({"r": 25},1000);
                }, function() {
                    circle.remove();
                });
            }, function() {

            });
        </script>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

当你停止寻找时,你会找到你想要的东西。

我似乎在寻求:Element.isPointInside(x, y) http://raphaeljs.com/reference.html#Element.isPointInside

我用它来测试新元素是否在光标下,这样我就可以手动触发它们的悬停事件。