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
参数并将其传递。
我有一个 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
参数并将其传递。