Rilevamento delle funzionalità del browser
I browser supportano la maggior parte delle funzionalità JScript. Tuttavia, le nuove funzionalità destinate a .NET Framework, gli oggetti basati su classi, i tipi di dati, le enumerazioni, le istruzioni di compilazione condizionale e l'istruzione const sono supportate solo sul lato server. È pertanto necessario utilizzare queste funzionalità esclusivamente in script sul lato server. Per ulteriori informazioni vedere Informazioni sulla versione Jscript.
Mediante uno script di JScript è possibile rilevare le funzionalità del modulo di gestione che lo interpreta o lo compila. Tuttavia si tratta di una soluzione superflua se si scrive codice per un'applicazione del lato server da eseguire in ASP o ASP.NET o per un programma per la riga di comando. In questi casi è infatti piuttosto facile individuare la versione di JScript supportata e scrivere codice ad essa appropriato. Tuttavia, quando si eseguono script sul lato client in un browser, il rilevamento della versione è importante per garantire la compatibilità del modulo di gestione di JScript nel browser.
Per verificare la compatibilità con JScript è possibile utilizzare le funzioni del modulo di gestione di script oppure la compilazione condizionale. Entrambi i metodi prevedono vantaggi specifici.
Funzioni del modulo di gestione di script
Le funzioni del modulo di gestione di script (ScriptEngine, ScriptEngineBuildVersion, ScriptEngineMajorVersion, ScriptEngineMinorVersion) restituiscono informazioni sulla versione corrente del modulo stesso. Per ulteriori informazioni vedere Funzioni (Visual Studio - JScript).
Per garantire la massima compatibilità, in una pagina in cui viene eseguita la verifica delle versioni di JScript supportate è consigliabile utilizzare solo funzionalità comprese nella versione 1 di JScript. Se un modulo di gestione supporta una versione superiore a JScript 1.0, è possibile impostare il reindirizzamento a un'altra pagina che utilizza le funzionalità avanzate. Pertanto è necessario disporre di versioni distinte di ciascuna pagina Web in corrispondenza di ciascuna versione di JScript di cui si desidera garantire il supporto. Nella maggior parte delle situazioni la soluzione più efficiente consiste nel disporre di due sole pagine, una progettata per una particolare versione di JScript, l'altra per il funzionamento senza JScript.
Nota
Il codice JScript che richiede l'utilizzo di funzionalità avanzate deve essere inserito in una pagina distinta non eseguita da browser che dispongono di moduli di gestione incompatibili. Si tratta di una soluzione obbligatoria in quanto il modulo di gestione di script di un browser deve interpretare tutto il codice JScript contenuto in una pagina. I moduli di gestione meno recenti non supportano l'utilizzo di un'istruzione if…else per passare da un blocco di codice in cui viene utilizzata una versione aggiornata di JScript a un blocco di codice basato sulla versione 1 di JScript.
Nell'esempio riportato di seguito viene illustrato l'utilizzo delle funzioni del modulo di gestione di script. Dal momento che queste funzioni furono introdotte nella versione 2.0 di JScript, è necessario verificare se sono supportate dal modulo di gestione in uso prima di tentare di utilizzarle. Se il modulo di gestione supporta solo JScript 1.0 o non riconosce JScript, l'operatore typeof restituirà la stringa "undefined" per ogni nome di funzione.
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);
Compilazione condizionale
Mediante variabili e istruzioni di compilazione condizionale è possibile nascondere il codice JScript ai moduli di gestione che non supportano la compilazione condizionale. Si tratta di una tecnica utile quando si desidera includere una quantità limitata di codice alternativo direttamente nella pagina Web.
Nota
Non utilizzare commenti su più righe all'interno di blocchi di compilazione condizionale dal momento che potrebbero essere interpretati erroneamente dai moduli di gestione che non supportano la compilazione condizionale.
<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 una grande quantità di codice è inclusa all'interno del blocco condizionale @if, potrebbe essere più agevole utilizzare il metodo di utilizzo delle funzioni del modulo di gestione di script precedentemente delineato.
Vedere anche
Concetti
Informazioni sulla versione Jscript
Altre risorse
Scrittura, compilazione e debug di codice JScript