Pergunta

Existe alguma maneira de chamar uma folha de estilo, e única se ele não estiver disponível, chamar um estilo de outro local?

Algo parecido com isto:

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

Mas única chamar o segundo, se o primeiro não está disponível? Eu não quero fazer 2 chamadas se é desnecessário. Obrigado.

EDIT: Isso é porque eu notei no trabalho, meu CDN está bloqueado, por isso não estilos aparecer, mas o site faz. Estou assumindo um monte de lugares pode ter o mesmo bloco (firewall bloqueando aplicações web). Então eu gostaria de pegar o css da cópia local.

Foi útil?

Solução

Não é possível na marcação HTML puro. No entanto, você poderia fazer isso do lado do servidor com um script simples, por exemplo, (Pseudocódigo):

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

Na realidade, porém, suas folhas de estilo são susceptíveis de ser armazenado em cache pelo navegador, por isso é difícil colocar um fardo para o usuário final. Você poderia simplesmente ordenar os s modo que a folha cargas 'segunda' estilo primeiro, e as cargas folha primários segundo. Isso faria com que a folha primária para substituir qualquer coisa na folha secundária ... mas se a folha primária não estava disponível, a folha secundária seria ainda funcionar como previsto.

Outras dicas

JavaScript / AJAX é fortemente não é recomendado devido ao seu comportamento muito imprevisível (não estou falando sobre a compatibilidade cross-browser, mas alguns usuários desligou-o.)

Se eu fosse você, eu iria verificar a existência da CSS primeiro dado lado do servidor e inserir a href em conformidade.

Também tenha em mente que, se você realmente tem que usar este tipo de mecanismo para certificar-se, então você está dizendo que seus servidores não são confiáveis.

Não, porque a própria os elementos LINK são estáticos ( "burro"). Então você quer necessidade JavaScript, GreaseMonkey (no Firefox, mas isso é JavaScript, também) ou você realmente tem que perguntar para ambos.

A ordem deve ser diferente, porém, IIRC: A mesma regra CSS irá substituir uma anterior. Então, você precisa incluir o arquivo local, primeiro, e depois carregar o externo. Se o externo não estiver disponível, será utilizada a sua cópia local.

Se você colocar o arquivo CSS no disco rígido local, este será muito barato.

Dito isso, o navegador nem sempre baixar o arquivo. Ele irá verificar primeiro se a cópia em seu cache ainda é atual e se for, não vai baixar o arquivo novamente.

Você poderia pelo uso padrão do 'local.css' e uso javascript (usando ajax) para carregar o novo. Se o pedido pode carregar o novo arquivo css que vai ok, então, você apenas muda nada.

Ehmm ... Você coudl usar este:

Eu não sei se o estilo alternativo é carregado quando a primeira falha, mas você pode tentar, se não tiver certeza, leia isto: a List Apart Tutorial para Alterar Stylesheets

Isto pode ser conseguido por JavaScript. Código deve ser assim:

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

onde loadcss é função verifica se o CSS está carregado ou não

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top