我有一个需要停止冒泡的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) ;
是否有不同的方式来编写它以便它适用于所有浏览器?
答案 0 :(得分:1)
这是因为您的处理程序没有定义event
参数,该参数在Chrome和IE中可用作全局,但不能用于Firefox。
更改处理程序,将event
添加到形式参数列表的开头。
我假设其余参数与.bind()
绑定或通过闭包传递。如果使用.bind()
,那么您实际上需要将其添加为 last 参数。
如果您正在使用闭包,那么实际的绑定处理程序可能需要定义event
参数并将其传递。