position:fixedのサポートを検査する
android端末のwebkitや普通のブラウザはposition:fixedをサポートしているけどiOSのwebkitは何故かサポートしていないので、うざい。うざいけど判別しなきゃ行けないのでsnippet
var isSupportedPositionFixed = (function (body){ var element = document.createElement('div'); element.innerHTML = 'x'; element.style.position = 'fixed'; element.style.top = '0px'; body.appendChild(element); var bodyScroll = body.scrollTop; body.scrollTop = 100; var elementTop = element.getBoundingClientRect().top; var isSupported = (elementTop === 0) ? true :false; body.removeChild(element); body.scrollTop = bodyScroll; return isSupported; })(document.body); console.log(isSupportedPositionFixed);
解説としては、fixedのエレメントを使って、少しbodyをscrollしてgetBoundingClientRectで実際の位置を取得して、動いていないかどうか確認するという感じ。