Share via


Detectando recursos do navegador

Embora navegadores ofereçam suporte à maioria dos recursos de JScript, o novo apresenta destino do .NET estrutura, com base na classe objetos, tipos de dados, enumerações, as diretivas de compilação condicional e o Const demonstrativo, são suportados apenas no lado do servidor.Conseqüentemente, você deve usar esses recursos exclusivamente em scripts do lado do servidor.Para obter mais informações, consulte Informação de Versão JScript.

Um script JScript pode detectar os recursos do mecanismo que interpreta ou compila-lo.Isso é desnecessário se estiver escrevendo código para um aplicativo do lado do servidor (a ser executado em ASP ou ASP.NET) ou um programa de linha de comando desde que você pode com com facilidade detectar a versão suportada do JScript e código apropriadamente. No entanto, ao executar scripts de cliente em um navegador, esta detecção é importante garantir que o script é compatível com o mecanismo JScript no navegador.

Há duas maneiras para verificar se há compatibilidade JScript, usando as funções de mecanismo de script ou por meio de compilação condicional.Há vantagens em usar as duas abordagens.

Funções de mecanismo de script

As funções de mecanismo de script (ScriptEngine, ScriptEngineBuildVersion, ScriptEngineMajorVersion, ScriptEngineMinorVersion) retornar informações sobre a versão corrente do mecanismo de script. Para obter mais informações, consulte Funções (JScript).

A maioria dos compatibilidade, o somente os recursos encontrados no JScript versão 1 devem ser usados em uma página verificações versões JScript.Se um mecanismo oferece suporte a uma versão de JScript maior 1.0, você pode redirecionar para outra página que inclui recursos avançados.Isso significa que você deve ter uma versão separada de cada página da Web correspondente a cada versão do JScript para oferecer suporte.Na maioria das situações, a solução mais eficiente é ter apenas duas páginas, uma projetado para uma versão específica do JScript, e o Outros projetado para funcionar sem JScript.

Observação:

Código de JScript que usa recursos avançados deve ser colocado em uma página separada não é executada por navegadores com mecanismos incompatíveis.Isso é obrigatório porque o mecanismo de script de um navegador interpreta todo o código JScript contido em uma página.Usando um if…else demonstrativo para comutador entre um bloco de código que usa a versão mais recente do JScript e um bloco de JScript versão 1 do código não funcionará para mecanismos mais antigos.

O exemplo a seguir ilustra o uso das funções de mecanismo de script.Como essas funções foram introduzidas no JScript versão 2.0, você deve primeiro determinar se o mecanismo oferece suporte às funções antes de tentar usá-los.Se o mecanismo dá suporte apenas JScript versão 1.0 ou não reconhece o JScript, o typeofoperador retornará a seqüência de caracteres "indefinida" para cada nome de função.

if("undefined" == typeof ScriptEngine) {
   // This code is run if the script engine does not support
   // the script engine functions.
   var version = 1;
} else {
   var version = ScriptEngineMajorVersion();
}
// Display the version of the script engine.
alert("Engine supports JScript version " + version);
// Use the version information to choose a page.
if(version >= 5) {
   // Send engines compatible with JScript 5.0 and better to one page.
   var newPage = "webpageV5.htm";
} else {
   // Send engines that do not interpret JScript 5.0 to another page.
   var newPage = "webpagePre5.htm";
}
location.replace(newPage);

Compilação condicional

Variáveis de compilação condicional e instruções podem ocultar o código de JScript de mecanismos que não oferecem suporte a compilação condicional.Essa abordagem é útil se você deseja incluir uma pequena quantidade de código alternativo diretamente na página da Web.

Observação:

Não use comentários de várias linhas dentro de compilação condicional blocos desde mecanismos que não oferecem suporte a compilação condicional talvez misinterpret-los.

<script>
/*@cc_on
@if(@_jscript_version >= 5 )
// Can use JScript Version 5 features such as the for...in statement.
// Initialize an object with an object literal.
var obj = {"a" : "Athens" , "b" : "Belgrade", "c" : "Cairo"};
var key;
// Iterate the properties.
for (key in obj) {
   document.write("The "+key+" property has value "+obj[key]+".<BR>");
}
@else 
@*/
alert("Engine cannot interpret JScript Version 5 code.");
//@end
</script>

Se o condicional@if bloco inclui muitos códigos, talvez seja mais fácil de usar a abordagem descrita acima para usar as funções de mecanismo de script.

Consulte também

Conceitos

Informação de Versão JScript

Outros recursos

Escrevendo, compilando e depurando código JScript

Funções (JScript)

Compilação condicional