8 Stimmen

HTAs; andere Browser zum Hosten verwenden?

Wenn Microsofts Methode zur Verwendung des IE als lokaler Host für HTAs funktioniert, kann ich dann stattdessen einen anderen Browser verwenden?

13voto

Das können Sie nicht.

Es gibt ein ähnliches Mozilla-Projekt namens XULRunner aber HTA funktioniert nur im Internet Explorer - die beiden Technologien sind nicht kompatibel.

Um dies zu verdeutlichen: HTA wird wahrscheinlich nicht funktionieren in allem, was nicht IE ist. Ja, HTA ist ein Browser-Steuerelement in einem Fenster, aber es hat auch normale Anwendungsprivilegien (d. h. Zugriff auf das Dateisystem, die Registrierung, Ausführung von Arbiträrcode usw.). Wenn es in einem Browser läuft, werden diese Rechte verweigert (aus guten Gründen - Sie wollen nicht, dass irgendeine Webseite Ihre Dateien liest).

Der Start des HTA in einem Browser wird also funktionieren, aber jede Interaktion mit dem lokalen System wird fehlschlagen, was die ganze Idee zunichte macht. Das Starten eines HTA in XULRunner wird ebenfalls fehlschlagen, da XULRunner eine völlig andere API verwendet.

Das einzige Szenario, das funktionieren könnte, ist folgendes: eine Webapplikation, die keine der HTA- oder XULRunner-spezifischen APIs verwendet (d.h. sich wie eine normale Browser-Applikation verhält). In diesem Fall könnte Ihre Anwendung sowohl mit HTA, XULRunner als auch in jedem Browser funktionieren. Im Übrigen würde dies jeden Vorteil der Verwendung von HTA zunichte machen und aufgrund der höheren Privilegien massive Sicherheitslücken mit sich bringen; Sie wären besser dran, wenn Sie Google Chrome oder Mozilla Prism dafür verwenden würden.

(Wir versuchen schon seit einiger Zeit, eine browserübergreifende Lösung zu finden, und HTA ist definitiv nicht die richtige)

9voto

Mike Gale Punkte 311

Ich habe mich mit der Aufgabe befasst, hta's von verschiedenen Browsern aus auszuführen. Ich habe meine Ergebnisse hier für alle anderen, die versuchen, das zu tun und findet diese Frage.

Sie können hta's von verschiedenen Browsern aus ausführen, indem Sie dieselbe mshta-Datei wie der IE verwenden. Sie benötigen vollständig qualifizierte URIs in Ihrem HTA-Code, was im IE nicht erforderlich ist.

Heute (2011-02-01) habe ich versucht, die hta's von Firefox (3.6.13) , Oper 11 y Safari für Windows 5.0.3 .

Nach einigen Anlaufschwierigkeiten in Firefox Ich habe hta's zum Laufen gebracht von diesen Browsern. (In allen Fällen sind diese die gleiche ausführbare mshta-Datei verwenden die der IE verwendet. Dies ist nicht hta's, die in anderen Browsern laufen aber hta's laufen von anderen Browsern. Dies könnte für Ihre Zwecke geeignet sein.)

Das hta startete Desktop-Anwendungen auf meinem Rechner (wie auch im IE).

Die Erfahrung war nicht perfekt . Für den IE setze ich die relativen Root-Pfade in der hta. Bei den anderen Browsern ist das nicht möglich. Sie müssen voll qualifizierte URIs für Dinge wie Bilder, referenzierte Hta's und Icons setzen.

Nach ein wenig Bearbeitung funktionieren die Hta's nun in 4 Browsern (IE 8, FF 3, Opera 11 und Safari 5 (Windows)).

(Ein kurzer Schnappschuss davon. Ich führe hta's von einem Webserver auf dem lokalen Rechner aus. (Ich habe nicht vor, sie von entfernten Standorten aus laufen zu lassen.) Dadurch kann mein Arbeitsablauf reibungsloser vom Browser zum Desktop übergehen. Die HTAs rufen lokale Anwendungen auf, die Dinge wie die Bearbeitung von Webseiten (einschließlich der HTAs selbst), die Validierung dieser Seiten und das Aufrufen von IDEs erledigen. Die Überbrückung der Kluft zwischen Browser und Desktop-Anwendungen war eine befreiende Erfahrung. Ich empfehle es!)

Anmerkungen:

  1. Der Firefox Entwicklungsteam haben Notizen über die Ermöglichung von Hta, die mich ermutigt haben, nach anfänglichem Misserfolg weiterzumachen.
  2. Um dies zu erreichen in Firefox-Konfiguration Ich stelle HTML-Anwendungen so ein, dass sie unter mshta.exe (in der Combo-Box Microsoft HTML Application Host genannt) . Das hat anfangs nicht funktioniert. Ich wählte "andere" und wählte die gleiche Anwendung von Hand. Das hat funktioniert, obwohl ich zwei identisch aussehende Einträge habe! Sie benötigen mshta.exe auf Ihrem Rechner, um jeden Browser auszuführen . Ich nehme an, dass mshta normalerweise mit dem IE installiert wird ( mshta ist im Wesentlichen eine modifizierte Version des IE, möglicherweise nicht die aktuelle Version! )
  3. Die Firefox-Entwickler haben dies als eine strategische Anstrengung um den IE aus dem Unternehmen zu verdrängen. Ihre Implementierung (und die von Opera) zwingt Sie dazu, vollständig qualifizierte URIs zu verwenden, aber abgesehen davon funktionieren die HTAs wie erwartet.
  4. Firefox scheint Cache alte Versionen der hta's, und lädt keine neuen herunter, obwohl es scheint, etwas herunterzuladen! Möglicherweise müssen Sie den Cache während der Entwicklung löschen.
  5. Mein erster Versuch, dies mit Chrome zu tun, war nicht erfolgreich. Weitere Untersuchungen legen nahe Chrome verfügt nicht über eine native Schnittstelle für den Aufruf anderer Prozesse, basierend auf deren Dateierweiterung.

2voto

Bob77 Punkte 13047

Es ist nicht so sehr, dass IE etwas hostet, sondern dass mshta.exe Komponenten hostet, die es mit IE teilt. MSHTA ist ein Skript-Host ähnlich wie CScript und WScript. Der IE ist zwar auch ein Skript-Host (im engeren Sinne), sein Hauptzweck ist jedoch ein Webbrowser.

Das bereits erwähnte Mozilla-Projekt ist die nächstliegende Alternative, die ich gefunden habe und die auf den Innereien eines Browsers basiert.

Es gibt auch andere Skript-Hosts für Windows. Einer von ihnen ist NS Basic/Desktop aber es basiert auf Standard-Windows-Steuerelementen, nicht auf Browser-Rendering und einem HTML-DOM.

1voto

Tom Stein Punkte 11

Nur um das klarzustellen: Es ist weder IE noch MSHTMA, der eine Webseite wirklich rendert. Das Rendering ist teilweise in das Betriebssystem integriert. Daher funktionieren Dinge wie Active Desktop (erinnert sich jemand an diese XP-Sache?) oder .HTA oder .CHM auch ohne IE. Es ist einfach derselbe Weg, einige HTML-Sachen zu erkennen.

0voto

Crippledsmurf Punkte 3942

Ich glaube, dass das Hosting von HTA-Anwendungen im Internet Explorer funktioniert, weil der HTA-Host für die Handhabung der Erweiterung registriert ist. Wenn dies tatsächlich der Fall ist, dann könnte ein anderer Host verwendet werden

Der Vollständigkeit halber sollte ich anmerken, dass ich keine Erfahrung mit der Entwicklung von HTA-Anwendungen habe und meine Antwort auf mein Verständnis des Windows-Betriebssystems stützt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X