触发事件拉斐尔外部(Triggering Raphael events externally)

2019-06-27 05:59发布

我的应用程序是使用拉斐尔放弃对象的集合到一个页面,每一个click处理器结合使用连接到当它通过JSON装入对象数据。 这是所有工作的罚款。

我现在尝试添加使用一些黄瓜测试覆盖率(是的,我知道我应该在第一已经建立了测试,我会做下一次)。 我需要触发的第一个对象上点击来测试该对象的相关页面加载。 我试图找到该对象的相应的SVG路径和触发click反对事件,但不起作用。 我也尝试下探每个拉斐尔设置成一个全局对象,但无法工作,如何触发拉斐尔click针对相应的一个事件。

为了给一些具体的问题:

1)如何将一个手动触发事件拉斐尔?

2)是否有可能触发事件说,如果你有拉斐尔组拥有SVG元素的引用?

3)如果没有,是否有可能访问的套拉斐尔拖住当前集合?

Answer 1:

我发现,先找到拉斐尔对象,然后遍历DOM让我找到自己的事件处理程序的功能。 对于矿山,点击事件是零事件。

所以触发这一切我所做的是:

 raphobj.events[0].f();

不过要小心,因为如果在点击事件您引用“这个”它不会工作。



Answer 2:

您可以将这个自定义方法添加到您的拉斐尔元素:

Raphael.el.trigger = function(eventName){
    for(var i = 0, len = this.events.length; i < len; i++) {
        if (this.events[i].name == eventName) {
            this.events[i].f.call(this);
        }
    }
}

您可以使用它,就像:

var r = paper.rect(0,0,100,100).attr({"fill": "#f00"});

r.click(function(){
    this.attr("fill": "#0f0");
});

r.trigger("click");


文章来源: Triggering Raphael events externally