Detecção de capacidades do navegador
Embora os navegadores oferecem suporte a maioria dos recursos de JScript, os novos recursos destinados a.NET Framework, baseado na classe objetos, tipos de dados, enumerações, diretivas de compilação condicional e o const de instrução, 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ções sobre a versão de JScript.
Um script de JScript pode detectar os recursos do mecanismo que interpreta ou compila-lo. Isso é desnecessário se você estiver escrevendo o código de um aplicativo do lado do servidor (para ser executado no ASP ou ASP.NET) ou um programa de linha de comando, desde que você pode facilmente descobrir a versão suportada do JScript e código adequadamente. No entanto, quando a execução de scripts do lado do cliente em um navegador, esta detecção é importante garantir que o script é compatível com o mecanismo de JScript no navegador.
Há duas maneiras para verificar a compatibilidade de JScript, usando as funções do mecanismo de script ou usando a compilação condicional. Há vantagens em usar ambas as abordagens.
Funções do mecanismo de script
As funções do mecanismo de script (ScriptEngine, ScriptEngineBuildVersion, ScriptEngineMajorVersion, ScriptEngineMinorVersion) retornam informações sobre a versão atual do mecanismo de script. Para obter mais informações, consulte Funções (Visual Studio - JScript).
A maioria dos compatibilidade, o somente os recursos encontrados na versão 1 do JScript devem ser usados em uma página verificações versões JScript. Se um mecanismo oferece suporte a uma versão do JScript superior a 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 para cada versão do JScript que você deseja oferecer suporte. Na maioria das situações, a solução mais eficiente é ter apenas duas páginas, uma projetada para uma determinada versão de JScript, e o outro projetada 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 o código de JScript contido em uma página. Usando um if…else a instrução para alternar entre um bloco de código que usa a versão mais recente do JScript e um bloco de código do JScript versão 1 não funcionará para mecanismos antigos. |
O exemplo a seguir ilustra o uso das funções do mecanismo de script. Desde que essas funções foram introduzidas no JScript versão 2.0, você deve primeiro determinar se o mecanismo oferece suporte as funções antes de tentar usá-los. Se o mecanismo suporta apenas o JScript versão 1.0 ou não reconhece o JScript, o typeof operador 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
Instruções e variáveis de compilação condicional 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 os comentários de várias linhas dentro a compilação condicional blocos desde mecanismos que não oferecem suporte a compilação condicional podem interpretar incorretamente. |
<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 o uso de funções de mecanismo de script.
Consulte também
Conceitos
Informações sobre a versão de JScript
Outros recursos
Escrita, compilação e depuração de código de JScript