Domanda

C'è un modo per chiamare un foglio di stile, e solo , se non è disponibile, chiamare un foglio di stile da un altro percorso?

Qualcosa di simile a questo:

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

Ma solo chiamare il secondo se il primo non è disponibile? Non voglio fare 2 chiamate se non è necessario. Grazie.

EDIT: Questo è perché ho notato sul posto di lavoro, la mia CDN è bloccato, in modo che nessun stili compare ma non il sito. Io parto dal presupposto un sacco di posti possono avere lo stesso blocco (firewall che blocca le applicazioni web). Allora vorrei afferrare il css dalla copia locale.

È stato utile?

Soluzione

Non è possibile nel markup HTML puro. Tuttavia, si potrebbe fare questo sul lato server con un semplice script, per esempio (Pseudocodice):

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

In realtà, però, i tuoi fogli di stile sono suscettibili di essere memorizzata nella cache dal browser, quindi è difficilmente mettere un onere per l'utente finale. Si potrebbe semplicemente ordinare le s in modo che il foglio carichi 'secondo' stile prima, ed i carichi foglio primarie secondo. Ciò causerebbe il foglio primario di ignorare qualsiasi cosa nel foglio secondario ... ma se la scheda principale non era disponibile, il foglio secondario potrebbe funzionare come previsto.

Altri suggerimenti

JavaScript / AJAX è fortemente non raccomandato a causa del suo comportamento molto imprevedibile (non sto parlando di compatibilità cross-browser, ma alcuni utenti lo spense.)

Se fossi in te, mi piacerebbe verificare l'esistenza della prima data CSS lato server e inserire il href di conseguenza.

Anche tenere a mente, che se davvero necessario utilizzare questo tipo di meccanismo per essere sicuri, allora si sta dicendo i server non sono affidabili.

No, perché LINK elementi si sono statici ( "stupido"). Quindi è necessario o JavaScript, GreaseMonkey (su Firefox ma questo è JavaScript, troppo), o si hanno veramente a chiedere per entrambi.

L'ordine deve essere diverso, però, IIRC: La stessa regola CSS sovrascriverà un precedente. Quindi è necessario includere il file locale, prima, e poi caricare quello esterno. Se quella esterna non è disponibile, verrà utilizzata la copia locale.

Se si mette il file CSS sul disco rigido locale, questo sarà piuttosto a buon mercato.

Detto questo, il browser non sempre scaricare il file. E 'in primo luogo verificare se la copia nella cache è ancora in corso e, se lo è, non scaricare nuovamente il file.

Si potrebbe di default utilizzare il 'local.css' e utilizzare javascript (usando Ajax) per caricare il nuovo. Se la richiesta può caricare il nuovo file css che sarà ok, altrimenti, basta cambiare nulla.

EHMM ... Si scovare utilizza questa:

Non so se il foglio di stile alternativo viene caricato quando il primo viene a mancare, ma si potrebbe provare, se non è sicuro, leggere questo: a List Apart Tutorial per la modifica dei fogli di stile

Ciò può essere ottenuto da JavaScript. Codice dovrebbe essere simile a questo:

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

dove loadcss è funzione controlla se CSS è stato caricato o meno

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top