2013-08-30 42 views
2

之前停止我已經綁定一個click事件作爲document.body.onclick =函數(){警報(「AAA」)};奇怪的Click事件泡泡,它浮上document.body的

這兩者都做對IOS的Android或Chrome任何元素我點擊好。 但它不會在iPhone safari上觸發,同時點擊除a和img元素之外的元素。

但它可以在綁定touchstart事件時冒泡到身體。

最後,我要補充到div的(#main)包含我的所有元素,然後綁定在這個div的委託對象。

document.querySelector( 「#主」)。=的onclick函數(){警報( 「AAA」)}

所以我徘徊爲什麼onclick事件之前停止泡沫體。

回答

3

我知道這是很老了,但我仍設法把它挖出來,當我跑進了同樣的問題。

總之,在IOS的Safari鼠標事件不冒泡至document.body除非iOS的Safari瀏覽器認爲事件目標是可點擊的元件。

可點擊元素是下列之一:

  1. 事件的目標元件是鏈接或表單字段。

  2. 目標元素,或任何其祖先高達但不包括<body>,有一個明確的事件處理程序的任何鼠標事件的設置。這個事件處理程序可能是一個空的函數。

  3. 目標元件,或其任何祖先的直到幷包括所述文檔具有光標:指針CSS聲明。

(從引here,重點煤礦。)

一個簡單的解決方法是添加cursor: pointer到不符合該描述的任何元件。如果因爲任何原因這不是一個選項,您可以向目標添加一個無操作事件處理程序,或處理document.body以下一個級別的點擊。