Pergunta

Vamos supor que você tem uma página com um doctype relativamente rigorosa e HTML markup que é bastante perto de compatível, mas talvez erra em algumas maneiras bobo, talvez por causa de conteúdo do usuário que está fora de seu controle ... dizer que você está trabalhando em um sistema de gerenciamento de conteúdo ou um tema para um sistema de gerenciamento de conteúdo onde você controla alguma estrutura básica e precisam de algum javascript, mas você não é responsável por tudo o mais que vai para as páginas.

Como você pode dizer (ou: o que vai determinar) quando o navegador decide entrar em modo "peculiaridades" ao invés de uso é mais padrões máquina complacente?

Estou à procura de respostas para cada um dos principais navegadores, já que o IE, Chrome, Safari e Firefox irá, naturalmente, toda alça que de forma diferente. É um único suficiente erro para forçá-lo ou você tem alguma margem de manobra?

Foi útil?

Solução

Em Firefox e Opera você pode determinar se o seu navegador está em "modo quirks", verificando página de informações.

Usando document.compatMode, irá dizer-lhe o modo que você está com a maioria dos navegadores.

Em Chrome, Safari e IE , executar este javascript na barra de endereços:

 javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

(note que você vai precisar re-digite a parte javascript: depois de colar na barra de endereços, devido a alterações de segurança recentes)

Outras dicas

Como você pode consultar o modo de renderização em JavaScript você pode ter um artigo Bookmarklet que lhe dirá modo que uma página é usando o que render.

este modo de renderização bookmarklet que funciona bem para mim:

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');

A resposta completa à sua pergunta específica real de 'é um único suficiente erro para forçá-lo ou você tem alguma margem de manobra? é que ele depende totalmente o erro. Por exemplo,

<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

forçará peculiaridades modo no IE 6 e 7, apesar de não realmente Ebing um erro (que apenas jogar um total vacilante quando a primeira linha do arquivo não é uma declaração). Uma rápida lista de tipos / peculiaridades podem ser encontrados aqui

Tente furar a seguinte linha em seu HTML para testar (muito ruim javascript behavious eu estou passando por aqui - desculpe ... certifique-se isso nunca vai viver:)

<a href="javascript:alert(document.compatMode);">What mode am I?</a>

De acordo com a http://www.quirksmode.org/css/quirksmode.html: "O problema era que algumas páginas escritas em modo de peculiaridades tinha doctypes Portanto, cada navegador tem sua própria lista com doctypes que o modo de disparo peculiaridades Veja este gráfico de comparação navegador para uma visão geral destas listas:.. http://hsivonen.iki.fi/doctype/ "

Espero que isso ajude

Se você disser IE que deve ser rigoroso (via doctype) não vai mudar de idéia no meio da página.

Se eu entender peculiaridades modo corretamente, uma página que não valida contra o seu doctype declarado não é suficiente para o modo de disparo peculiaridades. Ele só não serão exibidos corretamente.

O melhor recurso que eu encontrei para determinar como diferentes navegadores lidar com cada tipo de documento é aqui .

Para o Firefox com o Web Developer Toolbar add on, você pode olhar para o trio de ícones à direita da barra. O mais à esquerda diz-lhe o modo em que está.

No IE você vai vê-lo nas ferramentas de desenvolvimento (pressionando F12), diz-lo no menu: Modo de Documento: ... E você também pode forçar um modo diferente lá.

na página html5, write "<!DOCTYPE html>" começar com a página pode mudar para document.compatMode = 'CSS1Compat'

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top