Наличие резервного файла CSS? - PullRequest
3 голосов
/ 15 мая 2009

Есть ли способ вызвать таблицу стилей, и только , если она недоступна, вызвать таблицу стилей из другого места?

Примерно так:

<link rel="Stylesheet" type="text/css" href="http://cdn.somewhere.com/css/style.css" />
<link rel="Stylesheet" type="text/css" href="local/style.css" />

Но только вызвать второго, если первое недоступно? Я не хочу делать 2 звонка, если это не нужно. Спасибо.

РЕДАКТИРОВАТЬ: Это потому, что я заметил на работе, мой CDN заблокирован, поэтому стили не отображаются, но сайт отображается. Я предполагаю, что во многих местах может быть один и тот же блок (брандмауэр блокирует веб-приложения). Итак, я бы хотел взять CSS из локальной копии.

Ответы [ 6 ]

4 голосов
/ 15 мая 2009

Это невозможно в чистой разметке HTML. Однако вы можете сделать это на стороне сервера с помощью простого скрипта, например, (Псевдокод):

if first style does not exist:
    output <link> to second sheet
else
    output <link> to primary sheet

В действительности, однако, ваши таблицы стилей, вероятно, будут кэшироваться браузером, так что это вряд ли обременяет конечного пользователя. Вы можете просто заказать s так, чтобы «вторая» таблица стилей загружалась первой, а основная таблица - второй. Это приведет к тому, что первичный лист будет переопределять что-либо на вторичном листе ... но если первичный лист будет недоступен, вторичный лист все равно будет работать так, как задумано.

2 голосов
/ 15 мая 2009

JavaScript / AJAX настоятельно не рекомендуется из-за его очень непредсказуемого поведения (я не говорю о кросс-браузерной совместимости, но некоторые пользователи отключили его.)

На вашем месте я бы проверил существование первой указанной серверной стороны CSS и соответственно вставил бы ссылку.

Также имейте в виду, что если вам действительно нужно использовать такой механизм, чтобы убедиться, то вы говорите, что ваши серверы не надежны.

1 голос
/ 15 мая 2009

Нет, потому что элементы LINK сами по себе являются статическими ("тупыми"). Так что вам нужен либо JavaScript, GreaseMonkey (в Firefox, но это тоже JavaScript), либо вам действительно нужно запросить оба варианта.

Порядок должен быть другим, хотя, IIRC: то же правило CSS перезапишет более раннее правило. Поэтому вам нужно сначала включить локальный файл, а затем загрузить внешний. Если внешний не доступен, будет использована ваша локальная копия.

Если вы поместите файл CSS на локальный жесткий диск, это будет довольно дешево.

Тем не менее, браузер не всегда загружает файл. Сначала он проверит, является ли копия в своем кэше все еще текущей, и если это так, он не загрузит файл снова.

0 голосов
/ 21 июля 2009

Ehmm ... Вы можете использовать это:

Я не знаю, загружается ли альтернативная таблица стилей при неудачном завершении первой, но вы можете попробовать, если не уверены, прочитать это: Учебник List Apart по изменению таблиц стилей

0 голосов
/ 15 мая 2009

Вы можете по умолчанию использовать local.css и использовать javascript (используя ajax) для загрузки нового. Если запрос может загрузить новый файл CSS, он будет в порядке, в противном случае вы просто измените что-либо.

0 голосов
/ 15 мая 2009

Этого можно достичь с помощью JavaScript. Код должен быть таким:

if( loadcss(first.css) == false) loadcss(second.css);

, где loadcss - функция, проверяет, загружена ли CSS или нет

...