ter um arquivo css 'backup'?
-
22-08-2019 - |
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.
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