Welcome to GASP Sign in | Join | Help

Paulo Morgado

Tudo sobre Arquitectura de Software

Localização dos Visitantes

  • Localização dos Visitantes

Livros

  • LINQ com C#

Eventos

Renûncia

As opiniões e pontos de vista expressos neste sítio são minhas e podem não reflectir as da Microsoft, do meu empregador, ou de qualquer comunidade a que pertença. Qualquer código ou opinião é oferecido sem qualquer garantia. Os produtos ou serviços mencionados são comprados por mim, disponibilizados pelo meu empregador ou pelo fabricante/vendedor o que não influencia em nada a minha opinião.

Definição Do Modo De Compatibilidade No Internet Explorer 8

O procedimento para definir o modo de compatibilidade do Internet Explorer 8 estão bem documentados aqui. No entanto, tenho me apercebido de que muitos programadores e administradores de sistemas desconhecem isto.

Apesar de se poder (e dever) definir o modo de compatibilidade para o qual as páginas foram desenvolvidas, se al não for eito, o Internet Explorer 8 e o Web Browser Control usarão os seguintes modos:

Aplicação

Intranet

Internet

Internet Explorer 8 modo IE7 modo IE8
Aplicação hospedando o Web Browser Control modo IE7 modo IE7

Se notarem no quadro acima, por omissão (e não defeito), apenas o Internet Explore 8 se anuncia como Internet Explorer 8 e apenas para sítios da Internet.

O modo como o Internet Explorer (e qualquer outro navegador) se anuncia perante um servidor é usando a sua user-agent string:

Modo

User Agent String

IE7 Mozilla/4.0 (compatible; MSIE 7.0; …; Trident/4.0; …)
IE8 Mozilla/4.0 (compatible; MSIE 8.0; …; Trident/4.0; …)

(Se estão interessados em saber mais acerca da história da user-agent string, leiam a História da user-agent string)

A Microsoft fez isto para manter a compatibilidade com aplicações empresariais, mas pode trazer algumas complicações ao desenvolvimento.

Quem estiver a desenvolver uma aplicação web para o Internet Explorer 8 dirigida ao públic (Internet), pode ver o mesmo na sua máquina de desenvolvimento. Já a equipa de testes (normalmente testando na intranet) poderá ver as páginas como estando no Internet Explorer 7. Se a aplicação é para ser acedida a partir de uma aplicação que hospeda o Web Browser Control e quem desenvolve não testar nessa aplicação, então não está a er a mesma coisa.

Para saber como o navegador se está a anunciar ao servidor na Internet, há diversos sítios que mostrarão a informação de user-agent string (como o http://www.useragents.org/) e ajuda ter o mesmo na intranet. Quem pretender construír uma aplicação destas usando ASP.NET, pode usar a propriedade UserAgent da lasse HttpRequest (ou a propriedade Browser, para informação mais detalhada).

Este tipo de informação também está disponível no Internet Explorer através do objecto navigator.

O Giorgio Sardo tem algumas funções para detectar o Internet Explorer 8 mas quem quiser desenvolver uma página (ou parte) de diagnóstioco para mostrar as característicasdo navegador, pode usar algo como isto:

<fieldset id="webBrowserInfo">
    <legend>Web Browser</legend>
    <table border="1">
        <tr>
            <td class="label" style="width: 100px"><label for="webBrowser$userAgent">userAgent</label> </td>
            <td class="value" colspan="3"><span id="webBrowser$userAgent"></span></td>
        </tr>
        <tr>
            <td class="label" style="width: 100px"><label for="webBrowser$appVersion">appVersion</label></td>
            <td class="value"><span id="webBrowser$appVersion"></span></td>
            <td class="label"><label for="webBrowser$appMinorVersion">appMinorVersion</label></td>
            <td class="value"><span id="webBrowser$appMinorVersion"></span></td>
        </tr>
        <tr>
            <td class="label" style="width: 100px"><label for="webBrowser$appCodeName" style="width: 600px">appCodeName</label></td>
            <td class="value" colspan="3"><span id="webBrowser$appCodeName"></span></td>
        </tr>
        <tr>
            <td class="label"><label for="webBrowser$appName">appName</label></td>
            <td class="value" colspan="3"><span id="webBrowser$appName"></span></td>
        </tr>
        <tr>
            <td class="label" style="width: 100px"><label for="webBrowser$userLanguage">userLanguage</label></td>
            <td class="value"><span id="webBrowser$userLanguage"></span></td>
            <td class="label" style="width: 100px"><label for="webBrowser$cpuClass">cpuClass</label></td>
            <td class="value"><span id="webBrowser$cpuClass"></span></td>
        </tr>
        <tr>
            <td class="label"><label for="webBrowser$systemLanguage">systemLanguage</label></td>
            <td class="value"><span id="webBrowser$systemLanguage"></span></td>
            <td class="label"><label for="webBrowser$platform">platform</label></td>
            <td class="value"><span id="webBrowser$platform"></span></td>
        </tr>
        <tr>
            <td class="label"><label for="webBrowser$browserLanguage">browserLanguage</label></td>
            <td class="value"><span id="webBrowser$browserLanguage"></span></td>
            <td class="label" style="width: 100px"><label for="webBrowser$cookieEnabled">cookieEnabled</label></td>
            <td class="value" colspan="5"><span id="webBrowser$cookieEnabled"></span></td>
        </tr>
    </table>
</fieldset>

<script type="text/javascript">
    document.getElementById("webBrowser$userAgent").innerHTML = window.navigator.userAgent;
    document.getElementById("webBrowser$appCodeName").innerHTML = window.navigator.appCodeName;
    document.getElementById("webBrowser$appMinorVersion").innerHTML = window.navigator.appMinorVersion;
    document.getElementById("webBrowser$appName").innerHTML = window.navigator.appName;
    document.getElementById("webBrowser$appVersion").innerHTML = window.navigator.appVersion;
    document.getElementById("webBrowser$browserLanguage").innerHTML = window.navigator.browserLanguage;
    document.getElementById("webBrowser$cookieEnabled").innerHTML = window.navigator.cookieEnabled;
    document.getElementById("webBrowser$cpuClass").innerHTML = window.navigator.cpuClass;
    document.getElementById("webBrowser$platform").innerHTML = window.navigator.platform;
    document.getElementById("webBrowser$systemLanguage").innerHTML = window.navigator.systemLanguage;
    document.getElementById("webBrowser$userLanguage").innerHTML = window.navigator.userLanguage;
</script>
Posted: Monday, April 05, 2010 2:46 AM by Paulo Morgado

Comments

No Comments

Anonymous comments are disabled