position:fixedのサポートを検査する

android端末のwebkitや普通のブラウザはposition:fixedをサポートしているけどiOSwebkitは何故かサポートしていないので、うざい。うざいけど判別しなきゃ行けないので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で実際の位置を取得して、動いていないかどうか確認するという感じ。