iPhone で blur イベントが効かないと聞いたので実験

span要素 1span要素 2span要素 3
結論、iPhoneでは、button要素のblurが発動しません。
[各要素説明]
・input[text] と textarea は、フォーカス後、要素外をクリックするなどするとblurが発動します。
・普通のbutton要素(button要素 1)はクリック後、他の要素をクリックするなどしないとblurは発動しません。
・button要素 2 は、クリック後blurイベントを発動させているので、すぐにblurが発動します。
・button要素 3 は、iPhoneでbutton要素のblurが発動しなかったので、tabIndexやonclick="this.blur();"では、blurは発動しません。
・button要素 4 は、autofocus属性を付与しています。これはiPhoneではblurが発動しています。でもPC Chromeで発動していません。
・普通のspan要素にはフォーカスが当たらないのでblurは効きません。
・span要素 2 はtabIndex="0"を設定しているのでフォーカスが当たるようになりblurが効きます。
・span要素 3 は、button要素 2 同様、クリック後blurイベントを発動させています。
要素PC ChromeiPhone Safari&Chrome
input[text]
textarea
button要素 1×
button要素 2×
button要素 3×
button要素 4×
span要素 1××
span要素 2
span要素 3

button要素だけiPhoneでblurが効いてませんね。buttonにはフォーカスが当たらない模様。
click、mouseleaveイベントは発動しますので、すぐに発火させるならclickやmouseleaveで対応できます。

追記:
mac safari でも 上記、iPhoneと同じ挙動でbutton要素のblurが効きません。