O IE11 removeu a compilação condicional do javascript?
Eu tenho determinado a versão do mecanismo do IE Trident usandocompilação condicional javascript:
var ieVersion = undefined;
/*@cc_on
ieVersion = Math.floor(@_jscript_version);
@*/
Isso funcionou bem para o IE8, 9 e 10. No IE11, o bloco com comentários condicionais não é executado,a não ser que Eu uso as ferramentas dev F12 para emular o IE10 (nesse caso, ele retorna o valor correto, 11).
Isso é confuso, já que oPágina do MSDN sobre compilação condicional especifica que se aplica ao Internet Explorer 11. (ATUALIZAÇÃO 2015-02-03: esta página foi atualizada para declarar explicitamente que seu conteúdonão aplicam-se ao IE11 no modo padrão.)não encontrei nenhuma informação online sugerir que o IE11 não deve suportar comentários condicionais.
Alguém tem qualquer informação sobre isto? Alguém pode reproduzir esse comportamento no IE11?
Edit: a relevância disso é no IE<audio>
Apoio, suporte. Eu tenho um aplicativo da web que requer a reprodução de cerca de 50 arquivos de áudio curtos (~ 1 segundo), que devem ser reproduzidos em uma ordem (pseudo) aleatória e individualmente após a interação do usuário. Os problemas são vários:
audio
elementos (declarados em HTML ou como objetos JS). Todos os arquivos de áudio subseqüentes falham silenciosamente para carregar e reproduzir. (Cada um dos 41 elementos pode ter sua origem reatribuída, mas cada segunda reatribuição também falha silenciosamente. Eu adoraria ver o código por trás desses bugs ...)O IE10 e o IE11 "gaguejam" ao reproduzir sons curtos: eles tocam uma fração de segundo, depois pausam e depois continuam. O efeito para o usuário final é que o áudio é ininteligível. (Oaudio
barbearpreload="auto"
e relatar um buffer diferente de zero.)Naturalmente, não há nenhuma maneira prática de detectar esses problemas, daí a detecção do navegador. Eu geralmente sinto que o sniffing do user-agent é muito perigoso para o código de produção; a@cc_on
a técnica parecia mais robusta.
Minha solução alternativa para o IE9 é serializar o estado do aplicativo parasessionStorage
depois do 25º som, recarregue a página e deserialize.
No IE10 / 11, minha solução é tocar os últimos 90% do volume de áudio em 0, o que parece forçar o IE ana realidade armazenar em buffer o arquivo.