Pergunta

Existe alguma diferença emu003Cnoscript> Processamento de bloqueio para páginas servidas com o tipo MIME texto/html versus aqueles servidos com mímica APLICAÇÃO/XHTML+XML?

Tanto quanto eu noteiu003Cnoscript> bloco para texto/html As páginas não são processadas se JavaScript estiver desativado no navegador. E o que acontece para APLICAÇÃO/XHTML+XML Páginas? Suspeito que, para essas páginas, o bloco ainda seja analisado quando o JavaScript está desativado. Mas não encontrei nenhum esclarecimento sobre esse problema.

Alguém poderia me apontar para apropriar o padrão W3C ou fornecer algum outro esclarecimento?

Ps. Situação de interesse é visitar serviços de contagem de que o usou003Cnoscript> Block para rastrear os visitantes com JS desativado. Se elementos (por exemplo, imagens de tamanho zero) deu003Cnoscript> Os blocos são baixados em qualquer caso, então esses serviços devem quebrar :(

Foi útil?

Solução

A melhor descrição é provavelmente a do draft html5 aqui: http://dev.w3.org/html5/spec/seMantics.html#the-monscript-element.

No texto/html, os detalhes exatamente do que acontece são bastante complexos. Basta seguir o link acima. Não há sentido em reproduzir aqui.

Para aplicação/xhtml+xml, o rascunho diz:

O elemento Noscript não deve ser usado nos documentos XML.

O elemento Noscript é eficaz apenas na sintaxe HTML, não tem efeito na sintaxe XHTML.

Portanto, no aplicativo/xhtml+xml, o conteúdo do noscript deve ser exibido, independentemente de o script estar disponível ou não. Claro, se scripts é Ativado, é bastante trivial usar o script para remover esses elementos do DOM.

CORREÇÃO.

Em pesquisas mais aprofundadas, o que a citação acima significa, eu acho, é que o elemento Noscript não tem efeito no análise.

Na seção XHTML aqui, http://dev.w3.org/html5/spec/the-xhtml-syntox.html#the-xhtml-syntax, o rascunho diz

Espera -se que o agente do usuário oculte os elementos do noscript para os quais o script está ativado, independentemente das regras do CSS.

Então, como você diz, quando o script está ativado, o elemento Noscript oculta seu conteúdo. No entanto, isso é tudo o que faz, e as imagens são carregadas de qualquer maneira. Além disso, tentei o seguinte:

<html xml:lang="en-GB" xmlns="http://www.w3.org/1999/xhtml" lang="en-GB">
  <head> 
    <title>Test</title>
  </head>
  <body>
    <p>Test 1</p>
    <noscript id="ns">
      <p>Test 2</p>
      <script type="text/javascript">
        document.getElementById("ns").parentNode.removeChild(document.getElementById("ns"));
      </script>
      <img src="test.gif" alt="test"/>
    </noscript>
  </body>
</html>

E embora o nó Noscript seja removido do DOM, o Firefox ainda tentou carregar a imagem.

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