Irina’s Weblog

1/10/2008

Internet Explorer ограничава бро€ CSSи за една страница

Filed under: Computers — Izida @ 2:35 pm

—блъсках се със следни€ проблем : връзката към външен файл с каскадни стилове присъства в главата на HTML документа в IE, само дето компонента на страницата, за който се отнас€ше, си седеше без никакъв стил. ¬ъв Firefox страницата изглежда нормално.

“ака научих, че Internet Explorer налага ограничение за максимални€ брой връзки към външни стилове, също така и към вградени стилове за вс€ка страница. —тати€та в MSDN : “All style tags after the first 30 style tags on an HTML page are not applied in Internet Explorer”, полезна дискуси€ на сайта на Drupal : “Drupal >> Issues >>IE: Stylesheets ignored after 30 link/style tags”.

—ега обаче установих, че и MSDN не казва истината – всъщност стиловете, които се прилагат, не са 30, а 31! ѕроблемът се про€в€ва ако се опиташ да включиш 32-ри по ред стил.

¬ примера на MSDN се добав€т стилове със следни€ JavaScript код :
for (i=0 ; i < 31; i++) { document.createStyleSheet() StyleSheetCount.innerText = "Total Style Sheets = " + i }

¬ижда се, че започват цикъла от 0, и за бройка отпечатват не бройката, а индекса на последни€ елемент.

Ћъчо предположи, че числото 31 идва от факта, че най-веро€тно стиловете са 32 (едно вече много кръгло и красиво от програмистка гледна точка число), но едини€т е запазен за "вградени€" в IE базов HTML стил. » все пак не разбирам - защо ако добав€ш стил с JavaScript ти дава грешка (нищо, че е напълно неинформативна - "Error: Invalid argument."), а ако просто имаш декларирани връзки към външни стилове тези над 31вата просто се игнорират без предупреждение?!

—ега ме гони парано€та и периодично подскачам с въпроса : "ј дали Internet Explorer не налага и ограничение за. ...?"

8 Comments »

  1. ’а, не б€х чувал за това ограничение (може би защото не съм стигал до толкова стилове за една страница), но не ме учудва ама никак. ¬сичко е много логично – един подразбиращ се, вграден в IE, един потребителски и остават 30 за сами€ сайт. Ћесно се заобикал€ проблема, но дискуси€та в ƒрупал предлага по-добро решение – да се събират в един CSS файл. «а ”ърдпрес намерих набързо н€какъв плъгин, който прави същото –
    http://www.i-marco.nl/weblog/archive/2007/05/31/wpcssstreamliner_css_optimizat
    Ѕ€х се замислил за проблема, докато си играх с YSlow, но за лични€ блог реших, че не си струва заниманието.
    ј по какъв повод на теб ти се е наложило да ползваш толкова много стилове?

    Comment by √онзо — 1/10/2008 @ 4:03 pm

  2. Ѕезумно е да имаш връзка в HEAD към 30 и повече CSS стила! ѕовече от 3-4 обикновено не са необходими — един master.css, eдин print.css, още 2-3 максимум, и… това е. јма 30? ќсвен това така се забав€ много браузърът и зареждането на вс€какви нещо от страницата, вс€ка връзка към нещо извън страницата = 1 connection, забав€не, свал€не, кеширане… ’м.

    “ова с 30+ стилове не бих го направил никога, освен на intranet сайт с 100/1000 Mbit/s за всички потребители в мрежата… и то дори тогава, бих се замислил… рЯЩВ

    ¬се пак, самото откритие си заслужава. »нтересно и полезно е (както аз веднъж открих, че в Windows XP н€ма никакъв начин да имаш файл или директори€, в път€ до който/ко€то сумарно да има повече от 256 знака).

    Comment by Michel — 1/10/2008 @ 4:07 pm

  3. ѕоводът за закачането на толкова CSSи си беше бъг рЯШЙ  ойто ще бъде оправен… ѕри това мисл€, че тр€бва да остав€т на самите разработчици да решат дали 30 стила им стигат. »наче в конкретни€ случай, имаме компонентно приложение – вс€ка кутийка на екрана си има собствен CSS. ќтдавна има нужда от оптимизаци€ – като обедин€ване на CSSите. Ќо беше оставена за по-късен етап. Ќа кой да му хрумне, че ще ни падне такава тухла на главиците! рЯЩВ

    Comment by Izida — 1/10/2008 @ 4:23 pm

  4. Ќ€ма да кажа нищо ново, но този браузър е толкова абсурден и неадекватен… уви, посто€нно тр€бва да се съобраз€вам с него, когато прав€ нещо.

    Comment by cx — 1/10/2008 @ 4:47 pm

  5. »ма и други ограничение рЯЩВ

    – бро€ на кукитата към един домейн
    – размер на URL-то (с GET параметрите)
    – познати€ проблем с PNG картинките

    сигурно има и други…

    Comment by √еорги — 1/10/2008 @ 5:33 pm

  6. Ќе мисл€, че е кой знае колко сложна причината за това ограничение.

    class CPage {
    ....
    private:
    CStylesheet *stylesheets[32];
    ...
    }

    »ли нещо в този дух.

    Comment by —тефан  ънев — 1/10/2008 @ 11:05 pm

  7. ћишел, много стилове могат да се натрупат ако например наблъскаш ”ърдпреса си с разширени€, които добав€т собствени стилове, комбинирано с н€колко от темата (за различни медии) може да стане страшно… ¬ ƒрупал или ƒжумла като добавиш разни модули (или както ги нарича съответната платформа) може да има същи€ ефект. “а пон€кога това се случва по назависещи от разработчиците причини.
    √еорги, добре че напомни, щото освен ограничението на дължината на GET, останалите не съм ги изпитвал на собствен гръб. ј то беше ба€ гол€мо, 8к май.

    Comment by √онзо — 2/10/2008 @ 12:34 pm

  8. —амо да добав€ – брой едновременни конекции към сървъра(примерно XHR или от Flash) – лимитиран е до 2. (IE 8 – са ги увеличили на 6)

    Comment by ƒимитър  арев — 2/10/2008 @ 1:53 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment

пїњ