2011-08-17 8 views
9

Ultimamente ci sono stati dei problemi perché a partire dalla versione di Firefox 4, i dati di ScrollPosition non vengono mai inviati agli utenti di Firefox. Ciò è causato dal file di navigazione che specifica solo le funzionalità per Firefox 3.x. Una soluzione a questo problema è aggiornare il file di navigazione su ogni server e ogni volta che viene rilasciata una nuova versione di Firefox (o Chrome o qualsiasi altra cosa). Bene, prima che abbiamo avuto la possibilità di affrontare questo problema, siamo già su Firefox 6, e sembra proprio una gara che non vogliamo continuare a correre.Quali sono gli svantaggi nell'impostare Page.ClientTarget = "uplevel" per tutte le pagine?

Si scopre che l'impostazione Page.ClientTarget = "uplevel" nella pagina principale (quindi, per tutto, incondizionatamente) risolve il nostro problema specifico di Firefox ScrollPosition. Quali sono le conseguenze negative a questo come soluzione? Gli utenti di browser Android avranno un'esperienza peggiore? Stanno semplicemente scaricando pagine inutilmente più grandi ora? C'è qualche ragione per cui non dovremmo farlo?

La documentazione per Page.ClientTarget è abbastanza spaventoso:

uplevel, che specifica funzionalità del browser equivalenti a Internet Explorer 6.0.

.. e sembra sbagliato, o almeno fuorviante. Sembra che sia stato scritto in un momento in cui IE6 era il browser più capace. "Uplevel" significa veramente "supponiamo che il browser sia capace di tutto" o "tratti come se trattassi IE6"?

+0

la versione corrente di firefox è 6.0. controlla se il problema persiste – naveen

+0

Sì, persiste. Non c'è nulla che Firefox possa fare per risolvere il problema se non per cambiare il suo numero di versione di nuovo a qualcosa di meno di 4. Il file di navigazione (che non abbiamo mai toccato) specifica solo le versioni di Firefox precedenti alla 4 come browser di livello superiore. –

+0

+1 per un link MSDN antico. Dovrebbero davvero aggiornarlo. – naveen

risposta

3

Se vuoi dire a WebForms di "licenziare" in modo efficace, allora l'impostazione di Uplevel funziona, sebbene tu voglia farlo in Page_Init che è precedente alla Pagina Master. A questo punto, WebForms presumerà che tutti siano un browser più recente di te.

1

Per la compatibilità lato server, che non può testare i limiti effettivi del browser, preferisco utilizzare una lista nera invece di una lista bianca: se un browser non è noto a non funzione di supporto X quindi presumo che lo supporti .

È anche possibile inserire nella blacklist tutte le versioni di un browser, ad es. nessuna versione di IE supporta la caratteristica X). ciò richiede di aggiornare la lista nera quando IE supporta la funzionalità X.

Gli aggiornamenti del browser non dovrebbero interrompere questo schema.

+0

Quale meccanismo usi per implementare la tua lista nera? –

+0

In .NET - browsers – orip

+0

Quali sono alcuni esempi di funzionalità che si disabilitano esplicitamente per determinati browser nella tua lista nera? Quale sarebbe la conseguenza dell'abilitazione di tali funzionalità? –

0

Questa non è una risposta alla "Quali sono gli svantaggi" domanda, ma:

È possibile utilizzare le espressioni regolari nella rilevazione versione del browser all'interno dei file browserCaps.

Per esempio, il 13 novembre, 2011 Microsoft ha rilasciato un aggiornamento per ASP.NET 4.0 che ha aggiunto IE10 alla lista uplevel (e corretto un bug nel file ie.browser, situato in \Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers). Avevano un'espressione regolare che controllava solo la versione principale a una sola cifra, ma dopo la patch qualsiasi versione di IE> = 6 sarà considerata uplevel.

Prima della modifica:

<capability name="majorversion" match="[6-9]" /> 

Dopo il cambio:

<capability name="majorversion" match="[6-9]|[1-9]\d+" /> 

Sto indovinando non si esegue in questo problema più, perché almeno a partire dal 26 ottobre 2011, il direttiva firefox utilizza anche un'espressione regolare per rilevare come le versioni di livello superiore> = 3: (dal file firefox.browser)

<browser id="Firefox3" parentID="Firefox"> 
    <identification> 
     <capability name="majorversion" match="^[3-9]|[1-9]\d+" /> 
    </identification> 

    <capabilities> 
     <capability name="javascriptversion"    value="1.8" /> 
     <capability name="supportsMaintainScrollPositionOnPostback" value="true" /> 
    </capabilities> 
</browser> 

ma se hai ancora probs, usa una regex forward-thinking (quella che non ha un bug "single digit major version" come nelle patch precedenti) nel file firefox.browser

Problemi correlati