event.stopPropagation Firefox

时间:2015-07-30 16:29:34

标签: javascript stoppropagation

我有一个需要停止冒泡的JavaScript函数。我拥有的代码看起来像这样。

function clickedOrderSample(element, product, color, entry_id) {
    var cname ; 
    cname = element.className ;
    event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true) ;
    if (cname == 'orderSample' ) {
        window.location="index.php?/shop/add_to_cart/" + entry_id + "/" + color ;
    } else {
        window.location="index.php?/shop/products/" + product + "/" + color ;
    }
}

这在FireFox 39.0中不起作用。问题出在线上。

event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true) ;

是否有不同的方式来编写它以便它适用于所有浏览器?

1 个答案:

答案 0 :(得分:1)

这是因为您的处理程序没有定义event参数,该参数在Chrome和IE中可用作全局,但不能用于Firefox。

更改处理程序,将event添加到形式参数列表的开头。

我假设其余参数与.bind()绑定或通过闭包传递。如果使用.bind(),那么您实际上需要将其添加为 last 参数。

如果您正在使用闭包,那么实际的绑定处理程序可能需要定义event参数并将其传递。