Una soluzione folle che sto attualmente provando è quella di iniettare il nostro HttpCapabilitiesDefaultProvider
che restituisce un valore statico HttpBrowserCapabilities
. Il trucco è quindi quello di restituire sempre lo stesso oggetto di capacità, quindi chiamando base.GetBrowserCapabilities
durante l'utilizzo di IE9, abbiamo usato Newtonsoft per creare una serializzazione, e salvando questa stringa nel sorgente, possiamo costruire un oggetto di capacità IE9 indipendentemente da cosa il browser ha avviato la richiesta.
public class CustomerHttpCapabilitiesProvider : HttpCapabilitiesDefaultProvider
{
private const string m_IE9Definition = "{\r\n \"$type\": \"System.Web.Mobile.MobileCapabilities, System.Web.Mobile\",\r\n \"UseOptimizedCacheKey\":..... ";
private readonly static Lazy<MobileCapabilities> m_Capabilities = new Lazy<MobileCapabilities>(() => JsonConvert.DeserializeObject<MobileCapabilities>(m_IE9Definition), true);
public override HttpBrowserCapabilities GetBrowserCapabilities(HttpRequest request)
{
return m_Capabilities.Value;
}
}
e assegnando il provider in Application_Start
:
HttpCapabilitiesBase.BrowserCapabilitiesProvider = new CustomerHttpCapabilitiesProvider();
Questo non ha davvero stato testato tuttavia, sicuri di ciò che è esattamente l'impatto di questo cambiamento.
@Svend eri anche a conoscenza del fatto che la modifica del programma utente può alterare l'output in bundle/minification? Coperto in [questo post SO] (http://stackoverflow.com/q/21991736/1810243) e un po 'più in profondità [in questo post del blog] (http://www.mikesmithdev.com/blog/aspnet-bundling -Cambiamenti-output-con-user-agent-eureka-1 /). – MikeSmithDev
@MikeSmithDev No, ma non sono sorpreso. Ho già litigato con i phantomjs e questa "caratteristica". L'attuale incarnazione che sto guardando è la codifica del testo HTML, stiamo vedendo il rendering di "ø" come à ¸ in Chrome o ø in IE, la cosa divertente è che quando eseguiamo il sito Web localmente il rendering è invertito (IE ottiene le due entità, mentre Chrome ottiene quella). – Svend
@MikeSmithDev L'uso del file di navigazione per attivare la funzionalità è probabilmente la cosa più orribile che ho visto nelle tecnologie web negli ultimi 10 minuti. – Svend