event.stopPropagation 火狐

event.stopPropagation Firefox

我有一个 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) ;

是否有不同的写法以便它适用于所有浏览器?

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

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

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

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