Die verwendete JavaScript-Version (oder JScript-Version) hängt von drei Dingen ab: installierte Interner Explorer-Version, verwendete Dokumenttypdeklaration (DTD) und x-ua-compatible
Meta-Tag.
Obwohl HTAs von mshta.exe ausgeführt werden, stellt der IE die JavaScript- und Rendering-Engines für Anwendungen bereit, daher steht später alles über JS-Versionen, Box-Modelle, Positionierung, CSS usw. und verfügbare APIs und HTML-Elemente. Wenn Sie IE11 in Ihrem System installiert haben, können Sie die neueste Version von JavaScript verwenden, indem Sie <!DOCTYPE html>
und <meta http-equiv="x-ua-compatible" content="ie=edge" />
verwenden.
Natürlich wird durch das Setzen der content
auf IE=edge
eine alte Version des installierten IE nicht überschrieben, es wird der neueste verfügbare Modus verwendet. Anstelle von edge
können Sie IE-Versionsnummern verwenden, um die App zu downgraden, wenn sie mit neueren IEs ausgeführt wird.
Wenn DTD weggelassen wird, sollte die Anwendung immer im Quirks-Modus ausgeführt werden, was im Fall von HTA mit IE5 vergleichbar ist. In diesem Fall kann der Dokumentmodus jedoch mit x-ua-compatible
geändert werden, aber zumindest in IE8 gab es einige Inkonsistenzen. 9. Es ist immer am sichersten, DTD zu verwenden, wenn der Quirks-Modus nicht benötigt wird.
Mit DTD, aber ohne x-ua-compatible
Meta-Tag HTAs werden im IE7-Standards-Modus ausgeführt (die object.defineProperty()
nicht unterstützt, ist es in IE9 eingeführt).
Sie können mehr über das Thema auf MSDN lesen: Introduction to HTML Applications (HTAs)
IE-Version Info für JS und CSS kann auf MSDN finden:
JavaScript version information
CSS Compatibility in Internet Explorer
Hier sind ein „sichere Starten Sie "für eine HTA-Datei, wenn Sie die neueste verfügbare Version verwenden möchten:
<!DOCTYPE html>
<html>
<head>
<title>HTA</title>
<meta http-equiv="x-ua-compatible" content="ie=edge" />
// All link, style and script tags, or any code should be placed below the five lines above
Sie auch ScriptEngine
Funktionen verwenden können, die neueste Skriptversion, um herauszufinden:
ver = ScriptEngine() + ' V ';
ver += ScriptEngineMajorVersion() + '.';
ver += ScriptEngineMinorVersion() + '.';
ver += ScriptEngineBuildVersion();
alert(ver);
Beachten Sie, dass dies nur die neueste Version von Browser, Dokumentenmodus haben eine auf die zurückgegebenen Werte beeinflussen nicht vorgesehen zeigt .
Immer wenn ich das Meta-Tag verwende, funktionieren meine hta: -Anwendungseigenschaften nicht. Wenn ich es kommentiere, tun sie es. Gibt es eine Lösung? – ndm13
Leider habe ich keine gute Lösung dafür.Seit IE10 scheint es, dass viele HTA-Eigenschaften nicht mehr angewendet werden (im geparsten Code wird das 'HTA'-Tag nach' body' verschoben). In IE9 scheinen sie immer noch respektiert zu werden. Ich habe meistens 'IE = 9' anstelle von' IE = edge' verwendet, was zumindest moderne Event-Handhabung und die meisten HTML5-Tags, einschließlich 'svg' und' canvas', liefert. – Teemu
'IE = 9' funktioniert perfekt! Ich hoffe, dass dies zu einem bestimmten Zeitpunkt behoben ist, aber es ist zweifelhaft, wie sie dies auslaufen scheinen. Ich wäre nicht überrascht, wenn die nächste Version von Windows HTA-Dateien nicht unterstützt. – ndm13