1

position:fixedをサポートしていないデバイスを検出しようとしています。編集: ブラウザー/OS の検出ではなく、機能を検出するようにコードを修正しました。

最初にこれを入力したとき、私は人々を混乱させていたと思います。ページを更新すると問題が発生します。高さが正しく計算されていません。これは私が知っているまったく別の問題ですが、それでも支援を求めています。

以下の検出スクリプトを更新しました。

    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 です。

ユーザーエージェントではなく、機能をテストする必要があります。私が言ったように、それをサポートしていない 1 つの iOS デバイスと、サポートしている別の iOS デバイスを持つことができます。実際、最近はほとんどの人がそうしています。

道徳的で敬虔な選択に導くための役立つリンクは次のとおりです

于 2013-01-09T20:40:13.100 に答える
0

すべてのサポート担当者に感謝します。jQuery(window).load(function() {

適切な高さを計算できるように、他のすべてがロードされているため、現在は機能しています。

于 2013-01-10T21:46:46.797 に答える