1

我正在尝试检测不支持position:fixed的设备。编辑:我已经修复了代码,因此它正在检测功能而不是浏览器/操作系统检测。

我想当我第一次输入这个时我把人们弄糊涂了。当我刷新页面时,我的问题开始发挥作用。高度计算不正确,我知道这是一个完全不同的问题,但我仍在寻求帮助。

更新了以下检测脚本:

    function fixed() {
        var container = document.body;

        if (document.createElement && container && container.appendChild && container.removeChild) {
            var el = document.createElement('div');

            if (!el.getBoundingClientRect) return null;

            el.innerHTML = 'x';
            el.style.cssText = 'position:fixed;top:100px;';
            container.appendChild(el);

            var originalHeight = container.style.height,
                originalScrollTop = container.scrollTop;

            container.style.height = '3000px';
            container.scrollTop = 500;

            var elementTop = el.getBoundingClientRect().top;
            container.style.height = originalHeight;

            var isSupported = (elementTop === 100);
            container.removeChild(el);
            container.scrollTop = originalScrollTop;

            return isSupported;
        }

        return null;
    }


    //TEST FOR MOBILE, SET TOP IMAGE TO RELATIVE
    if(fixed()) {
        image_height = jQuery("#outer_homepage_image").height() - 45;
        jQuery("#content").css("top",image_height);

        jQuery(window).resize(function() {
            image_height = jQuery("#outer_homepage_image").height() - 45;
            alert(image_height);
            jQuery("#content").css("top",image_height);
        });
    } else {
        jQuery("#outer_homepage_image").css("position","relative");
    }
4

2 回答 2

4

这是一件非常脆弱和考虑不周的事情。

if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {

例如,iOS 完全支持 position:fixed 自 iOS 4 以来。我们现在是 6。对于 Android 和 Blackberry,我不确定,但会在“支持”方面犯错。

您需要测试features,而不是 user agent。正如我所说,您可能拥有一台不支持它的 iOS 设备和另一台支持它的 iOS 设备。事实上,现在大多数人都这样做了。

这是一个有用的链接,可引导您做出道德、虔诚的选择: http: //kangax.github.com/cft/#IS_POSITION_FIXED_SUPPORTED

于 2013-01-09T20:40:13.100 回答
0

感谢所有支持的家伙。我用 jQuery(window).load(function() {

它现在可以工作了,因为其他所有东西都已加载,所以我可以计算出正确的高度。

于 2013-01-10T21:46:46.797 回答