| 

.NET C# Java Javascript Exception

6
Ich möchte gerne von meiner Seite einen Texsteditor starten, der dann einen vorgegebenen Text lädt. Der Besucher kann sich diesen Text dann speichern. Geht das und wenn ja, wie?
News:
24.11.2011
inagumi 31 1 2
3 Antworten
3
In der Webseite geht das, zumindest das starten eines Webeditors. Das Speichern müsstest du irgendwie anders lösen, zum Beispiel in dem du die Datei per Server-Script (z.B. PHP) dem Benutzer zum Download anbietest.
24.11.2011
LiRo 1,3k 1 9
Was Liro meint kannst du dir ungefähr so vorstellen wie das Antworten hier auf Codekicker. Ein Textfeld (Dein Editor) und ein paar Knöpfe um den Text zu formatieren.
Nicolai Schönberg 24.11.2011
2
Du kannst mit den richtigen Sicherheitseinstellungen mittels VBS und JS im IE unter verwenden des Windows-Scripting-Hosts Programme starten.

<script language="vbscript">
Set objShell = CreateObject("WScript.Shell")
objShell.Run "notepad"
</script>

<script language="javascript">
var objShell = new ActiveXObject("WScript.Shell");
objShell.Run("notepad");
</script>


Die Run-Methode gibt im Anschluss einen Error-Code zurück den du prüfen könntest und so raus bekommst ob das Programm auch gestartet wurde.

Leider ist mir aber keine Möglichkeit bekannt wie man dem notepad noch nen passenden Text unterjubelt. Außer vielleicht SendKey.
25.11.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
+1 Faszinierend ;-)
Dass man über das ActiveX-Shell-Objekt einen Prozess starten kann, wußte ich noch nicht. Aber "im IE" ist hier essentiell, oder? Kannst Du noch näheres zu den "richtigen Sicherheitseinstellungen" schreiben? Ich will ja wohl hoffen, dass das nicht die Defaults sind...
Matthias Hlawatsch 25.11.2011
Nur im IE, bei allen anderen Browsern muss man ne Lösung über ein NAPI-Plugin finden da diese kein ActiveX unterstützen.
Zu den Sicherheitseinstellung, ne unvollständige Auflistung:
* ActiveX-Steuerelemente ausführen, die für Skripting sicher sind*
* ActiveX-Steuerelemente und Plugins ausführen
* Active Scripting
* ...
Ich taste mich da auch immer nur stückweise ran bis es funktioniert ;)
Floyd 25.11.2011
1
Die Antwort ist, wie so oft: kommt drauf an. Aber die Tendenz ist eher: nein, geht nicht.

Falls Du vorhast, einen ganz bestimmten Texteditor zu starten (zum Beispiel notepad): Du kannst allein per Javascript keinen Prozess auf dem Client starten, schon allein aus Sicherheitsgründen. Außerdem gibt es keinen Editor, der auf allen Systemen verfügbar wäre, und im allgemeinen muss man ja als Webseitenanbieter mit Clients rechnen, die unter allen möglichen Betriebssystemen laufen. Für den Sonderfall, dass Du in einem Kontext arbeitest (z.B. kleines Intranet), wo Du alle Clients unter Kontrolle hast, könntest Du über den Workaround (oder Hack) nachdenken, ein Protokoll (analog zu http, ftp, mailto...) zu definieren, das das gewünschte Programm startet. Das müßtest Du einmal ausrollen, danach könntest Du über einen Link wie "text://something" das Programm starten. Empfehlen würde ich das nicht, aber technisch machbar ist es.

Das zweite: die meisten Editoren können Text nur vom Filesystem laden und damit müßtest Du Deinen Text erst mal dahinbringen, sprich lokal speichern. Auch das wird mit Javascript nicht gehen, auch wieder aus Sicherheitsgründen. (Bin mir nicht ganz sicher, ob es da in letzter Zeit eng umgrenzte Ausnahmen gibt.) Du könntest den Text aber in die Zwischenablage legen, dann müßte der Nutzer "nur" noch Strg+V drücken, um ihn im Editor zu sehen.

Warum aber legst Du Deinen Text nicht auf den Server und öffnest per Javascript einen Link dorthin? Du müßtest dann noch erreichen, dass der Browser dem Benutzer anbietet, die Datei in einem Programm seiner Wahl zu öffnen statt im Browser selbst. Dabei sollte Dir der HTTP-Header content-disposition helfen können. Der Text geht dann zwar nicht in einem bestimmten Editor auf, und der Benutzer muß nochmal was tun, aber zumindest in irgendeinem Editor (und vermutlich sogar dem vom Benutzer bevorzugten) außerhalb des Browsers sollte die Datei am Ende zu sehen sein.

Auf die letzte Möglichkeit, nämlich einen Web-Texteditor anzubieten, hat LiRo schon hingewiesen. Zum Speichern müßtest Du dann aber doch wieder über den Server gehen, und zwar letztlich wohl so, wie im vorigen Absatz skizziert.
24.11.2011
Matthias Hlawatsch 13,2k 4 9
"Du kannst allein per Javascript keinen Prozess auf dem Client starten" Falsch, das geht unter bestimmten Vorraussetzungen.
Floyd 25.11.2011

Stelle deine Javascript-Frage jetzt!