Versione JavaScript in HTA

Qualcuno sa quale versione di JavaScript è utilizzata dai file HTA.

Attualmente sta creando alcuni file di script e sta tentando di utilizzare Object.defineProperty

Quando si esegue come HTA, si tratta di errori che indicano che Object non supporta questa proprietà o questo metodo. L’ho eseguito come file HTM solo per verificare – e non c’è alcun problema.

Quindi posso solo supporre che mshta.exe stia usando un vecchio motore JavaScript. Qualcuno può confermarlo?

La versione JavaScript utilizzata (o JScript) dipende da tre fattori: installata la versione di Internet Explorer, la dichiarazione del tipo di documento utilizzato (DTD) e il meta tag x-ua-compatible .

Sebbene gli HTA siano eseguiti da mshta.exe, IE fornisce i motori di JavaScript e di rendering alle applicazioni, quindi tutto ciò che viene detto in seguito sulle versioni JS, sta per box-models, posizionamento, CSS ecc. E anche API ed elementi HTML disponibili.

Se hai installato IE11 nel tuo sistema, puoi usare l’ultima versione di JavaScript usando e .

Naturalmente, impostando il content su IE=edge non sovrascrive una versione precedente dell’IE installato, viene utilizzata l’ultima modalità disponibile. Invece di edge , puoi utilizzare i numeri di versione di IE per eseguire il downgrade dell’app quando vengono eseguiti con IE più recenti.

L’omissione della DTD dovrebbe sempre eliminare l’app per l’esecuzione in modalità Quirks, che nel caso di HTA è simile a IE5. Tuttavia, in questo caso, la modalità documento può essere modificata con x-ua-compatible , ma c’erano alcune incoerenze almeno in IE8 e 9. È sempre più sicuro usare DTD, se la modalità Quirks non è richiesta.

Con DTD, ma senza meta tag x-ua-compatible HTA vengono eseguiti in modalità standard IE7 (che non supporta object.defineProperty() , è introdotto in IE9).

Puoi leggere di più sull’argomento su MSDN: Introduzione alle applicazioni HTML (HTA)

Le informazioni sulla versione di IE per JS e CSS sono disponibili su MSDN:

Informazioni sulla versione di JavaScript

Compatibilità CSS in Internet Explorer

Ecco un “avvio sicuro” per un file HTA, quando si desidera utilizzare l’ultima versione disponibile:

    HTA  // All link, style and script tags, or any code should be placed below the five lines above 

Puoi anche utilizzare ScriptEngine funzioni di ScriptEngine per scoprire l’ultima versione dello script:

 ver = ScriptEngine() + ' V '; ver += ScriptEngineMajorVersion() + '.'; ver += ScriptEngineMinorVersion() + '.'; ver += ScriptEngineBuildVersion(); alert(ver); 

Si noti che questo mostra solo l’ultima versione fornita dal browser, la modalità documento non ha alcun effetto sui valori restituiti.