Pregunta

¿Hay alguna manera de llamar a una hoja de estilo, y solamente si no está disponible, llame a una hoja de estilo desde otra ubicación?

Algo como esto:

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

Pero Sólo llamar al segundo si el primero no está disponible? No quiero hacer 2 llamadas si no es necesario. Gracias.

EDIT: Esto se debe a que he notado en el trabajo, mi CDN está bloqueada, por lo que no hay estilos aparece pero el sitio hace. Estoy asumiendo una gran cantidad de lugares pueden tener el mismo bloque (firewall que bloquea aplicaciones web). Entonces me gustaría agarrar el css de la copia local.

¿Fue útil?

Solución

No es posible en el formato HTML puro. Sin embargo, usted puede hacer esto del lado del servidor con un guión sencillo, por ejemplo, (Pseudocódigo):

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

En realidad, sin embargo, las hojas de estilo son susceptibles de ser almacenado en caché por el navegador, por lo que es difícil poner una carga para el usuario final. Usted puede simplemente ordenar las s para que las cargas de hojas de 'segunda' estilo primero, y las cargas de hojas primarias segundos. Esto haría que la hoja primaria para anular cualquier cosa en la hoja secundaria ... pero si la hoja principal no estaba disponible, la lámina secundaria todavía podría funcionar según lo previsto.

Otros consejos

JavaScript / AJAX es fuertemente no se recomienda debido a su comportamiento impredecible (no estoy hablando acerca de la compatibilidad entre navegadores, pero algunos usuarios se apagaba.)

Si yo fuera usted, me gustaría comprobar la existencia de la primera CSS dada lado del servidor e inserte el href en consecuencia.

También hay que tener en cuenta, que si realmente tiene que utilizar este tipo de mecanismo para asegurarse de que, a continuación, usted está diciendo a sus servidores no son fiables.

No, porque en sí elementos de enlace son estática ( "mudo"). Así que o bien necesita JavaScript, Greasemonkey (en Firefox pero eso es JavaScript, también) o que realmente tenga que pedir tanto.

La orden debe ser diferente, sin embargo, IIRC: La misma regla CSS se sobreponen a una anterior. Así que hay que incluir el archivo local, primero y, a continuación, cargar el externo. Si el externo no está disponible, se utilizará su copia local.

Si coloca el archivo CSS en el disco duro local, esto será bastante barato.

Dicho esto, el navegador no siempre se descargará el archivo. Se compruebe en primer lugar si la copia en su caché sigue siendo actual y si lo es, no va a descargar el archivo de nuevo.

Se puede usar de forma predeterminada el 'local.css' y usar javascript (usando Ajax) para cargar el nuevo. Si la solicitud se puede cargar el nuevo archivo CSS que va bien, de lo contrario, sólo cambia nada.

Ehmm ... Usted se desvivían utiliza este:

No sé si se carga la hoja de estilo alternativo cuando la primera falla pero se puede probar, si no está seguro, lea esto: a List Apart Tutorial para Cambio de Estilo

Esto puede lograrse mediante JavaScript. El código debe ser como este:

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

donde loadcss es función comprueba si se carga css o no

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top