iOS4.3以下だとEvent delegationでA要素を探せない
こんなコードがあって、アンカー部分をタップしてもiOS4.3以下ではA要素を捕捉できない。
document.addEventListener('click', function(ev) { var target = ev.target; // iOS5以上、Android2.2以上では大丈夫(2.1以下未確認 if ( target.nodeName === 'A' ) { console.log(target.href); } }, false);
試しにalertしてみると、"#text"になってる。
document.addEventListener('click', function(ev) { var target = ev.target; console.log(target.nodeName); // => #text }, false);
#textを捕捉したいわけじゃないので、"#text"のときはparentNodeを参照するようにする。
document.addEventListener('click', function(ev) { var target = ev.target; if ( target.nodeName === '#text' ) { target = target.parentNode; } // これならどれでもOK if ( target.nodeName === 'A' ) { console.log(target.href); } }, false);
ちなみにjQueryのdelegationなら大丈夫です
$(document).on('click', 'a', function(ev) { console.log(this.href); });