2015-07-08 13 views
10

Sono nuovo di icone font-awesome. Ho una pagina in cui c'è un filtro in cui l'utente può cercare i dati. Ho aggiunto un'icona impressionante di font appena prima del link di ricerca (come da screenshot qui sotto), posso vedere questa icona in tutti i browser eccetto IE 11. La cosa divertente è che ho questa icona anche in altre pagine e posso vederla in IE 11, ma non riesco a vedere questa icona su questa pagina (come da screenshot qui sotto).l'icona di carattere impressionante non viene visualizzata in IE 11, ma mostra in altri browser

Ecco lo screenshot da IE 11:

enter image description here

Ecco lo screenshot da Chrome:

enter image description here

Qualcuno mi può aiutare su questo?

risposta

9

IE ha un problema con @font-face s viene fornito con l'HTTP-Header Pragma=no-cache. Ulteriori informazioni here

Sfortunatamente il problema è contrassegnato come non risolvibile, ma esistono alcuni accorgimenti. Quello che ha funzionato per me stava usando un filtro servlet che evita di impostare l'intestazione di Pragma.

Altre soluzioni che non hanno lavorato per me:

Font-awesome disappears after refresh for all ie browsers ie11,ie10,ie9

Font awesome icons becomes invisible in IE after refresh

+1

Penso che valga la pena menzionare qui che IE non memorizza nella cache quando è presente l'intestazione "Vary". Quindi potrebbe essere necessario rimuovere quell'intestazione oltre a rimuovere il Pragma/Cache-Content: l'intestazione no-cache. https://jakearchibald.com/2014/browser-cache-vary-broken/ – Crashthatch

1

Questa fissato il mio carattere-icone in IIS: Aggiungi un web.config nella directory dei caratteri con questi contenuti:

+0

Ok. Proveremo. Grazie! –

+0

Ottima soluzione, nella nostra applicazione abbiamo bisogno di intestazioni no-store e no-cache per motivi di sicurezza (aggiunte tramite web.config nel progetto root). Quindi nella cartella dei caratteri, abbiamo aggiunto nuovo web.config con le seguenti istruzioni: che ha risolto il problema. – Verthosa

+0

Ciao @ChrisGheen potresti citare la tua fonte? Non ho trovato un riferimento dove "nessuno" è un valore valido per "pragma". Vedi: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32 Grazie – Andres

9

Ho avuto lo stesso problema, l'ho risolto aggiungendo questo meta tag come il tag PRIMO in <head>:
<meta http-equiv="X-UA-Compatible" content="IE=edge">

Inoltre, secondo il official documentation, verificare quanto segue:

Per Internet Explorer: non servite i file con no-store opzione intestazione Cache-Control (Rif: # 6454) ;
Per Internet Explorer e HTTPS: non si forniscono file con l'opzione no-cache nell'intestazione di Pragma.

2

Dalla console IE tenta di eseguire script seguente

$('head').append('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" type="text/css" />'); 

Se funziona quindi provare a importarlo CDN invece di memorizzare in locale.

1

Ho avuto lo stesso problema con il font fantastico. Ho aggiunto un httpmodule personalizzato nella mia applicazione .net.

public class MyHttpModule : IHttpModule 
    { 
     public void Dispose() 
     { 
     } 
     public void Init(HttpApplication context) 
     { 
      context.EndRequest += new EventHandler(Context_EndRequest); 
     } 
     protected void Context_EndRequest(object sender, EventArgs e) 
     { 
      HttpResponse response = HttpContext.Current.Response; 
      if (string.Compare(HttpContext.Current.Request.Browser.Browser, "InternetExplorer", StringComparison.InvariantCultureIgnoreCase) == 0) 
      { 
       response.Headers.Set("Pragma", "none"); 
      } 
     } 
    } 

E registrato il modulo in web.config.

<system.webserver> 
    <modules> 
      <add type="MyHttpModule, Culture=neutral" name="MyHttpModule"/> 
    </modules> 
</system.webserver> 

Ha risolto il problema.

0

Se il server Apache sta servendo i file Font, aggiungere le seguenti voci a httpd.conf o .htaccess in.

Per impostare giusti tipi MIME per i file di font, aggiungere queste righe a config:

AddType application/vnd.ms-fontobject .eot 
AddType font/truetype .ttf 
AddType font/opentype .otf 
AddType font/opentype .woff 
AddType image/svg+xml .svg .svgz 

per aggiornare i file dei font intestazioni, questa correzione perfettamente lavorato per rendere font Icone in IE Browser.

<LocationMatch "\.(eot|otf|woff|ttf)$"> 
    Header unset Cache-Control 
    Header unset no-store 
</LocationMatch > 
1

Se si utilizza Spring MVC con Primavera di sicurezza, Primavera di sicurezza aggiunge automaticamente intestazioni di cache e così provoca font-impressionante per rompere l'IE11.

(https://docs.spring.io/spring-security/site/docs/current/reference/html/headers.html#headers-cache-control)

ho risolto il problema aggiungendo un ResourceHandler nel mio WebMvcConfiguration per font-impressionante configurato per permettere al browser di memorizzare nella cache i tipi di carattere.

public class WebMvcConfiguration extends WebMvcConfigurerAdapter 
{ 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
    { 
     registry.addResourceHandler("/assets/vendor/font-awesome/fonts/**") 
      .addResourceLocations("/assets/vendor/font-awesome/fonts/") 
      .setCachePeriod(31556926);   
    } 
} 
Problemi correlati