Вопрос

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

Что-то вроде этого:

<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 из локальной копии.

Это было полезно?

Решение

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

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

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

Другие советы

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

На вашем месте я бы проверил существование первого заданного CSS серверная часть и вставьте href соответственно.

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top