Wie weit kann ich mit JavaScript gehen?

8

Ich muss so viel wie möglich auf der Client-Seite tun. Genauer gesagt möchte ich JavaScript verwenden, um eine Schnittstelle zu codieren (die Informationen für den Benutzer anzeigt und die Antwort des Benutzers akzeptiert und verarbeitet). Ich möchte den Web-Serve nur dazu benutzen, um von dort eine Date-Datei zu nehmen und dann eine geänderte Datendatei zurückzusenden. Insofern würde ich gerne wissen, ob in JavaScript folgendes möglich ist:

  1. Kann JavaScript den Inhalt einer externen Webseite lesen? Mit anderen Worten, auf meinem lokalen Rechner laufe ich JavaScript, welches den Inhalt einer bestimmten Webseite liest.

  2. Kann JavaScript in einem HTML-Formular ausgefüllte Werte verarbeiten? Mit anderen Worten verwende ich HTML und JavaScript, um ein HTML-Formular zu generieren. Der Benutzer soll das Formular ausfüllen und auf "Senden" klicken. Dann sollten Daten an die ursprüngliche HTML-Datei gesendet werden (nicht an einen Webserver). Dann sollten diese Daten von JavaScript verarbeitet werden.

  3. Am Ende wird JavaScript eine lokale Datei erzeugen und ich möchte diese Datei an einen PHP Webserver senden. Kann ich das mit JavaScript machen?

  4. Kann ich die Ausführung eines lokalen Programms von JavaScript aus starten? Um genauer zu sein, ist das lokale Programm in Python geschrieben.

Ich werde alle Kommentare und Antworten zu schätzen wissen.

    
Roman 23.02.2010, 11:20
quelle

5 Antworten

9
  1. Es könnte technisch, aber kann nicht in Wirklichkeit aufgrund der gleichen Ursprungs-Politik . Dies gilt sowohl für das Lesen als auch das Schreiben externer Inhalte. Das Beste, was Sie tun können, ist ein iframe mit einer anderen Domain-Seite darin zu laden - aber Sie können nicht programmatisch darauf zugreifen. Sie können dies in IE umgehen, sehen Sie sich die Antwort von Andy E an.

  2. Ja für den ersten Teil, mmmm nicht wirklich für den zweiten Teil - Sie können ein Formular an eine HTML-Seite senden und GET-Argumente mit Javascript lesen, aber es ist sehr eingeschränkt (empfohlenes Maximum) Größe der Daten um 1024 Bytes). Sie sollten wahrscheinlich alle Intelligenz auf einer Seite haben.

  3. Sie können eine Datei lokal generieren, die der Benutzer herunterladen kann, indem Sie Downloadify verwenden. Das Erstellen einer Datei und das Hochladen auf einen Server ist ohne Benutzerinteraktion nicht möglich. Das Generieren von Daten und das Senden von Daten an einen Server als POST-Daten sollte jedoch möglich sein.

  4. Das ist sehr, sehr schwierig. Aus Sicherheitsgründen ist es in den meisten Browsern meistens nicht möglich, eine Erweiterung oder ähnliches zu installieren. Am besten eignen sich die proprietären Skriptsprachen von Internet Explorer (WScript, VBScript) in Verbindung mit dem Modell der "Sicherheitszonen", aber ich bezweifle, dass die Ausführung lokaler Dateien auch heutzutage noch möglich ist.

Pekka 웃 23.02.2010, 11:26
quelle
2

Wenn Sie Internet Explorer mit einer lokalen Datei verwenden, können Sie etwas tun, was Sie tun möchten:

  1. Es ist richtig, dass die Seiten durch die gleiche Herkunftsrichtlinie eingeschränkt sind (siehe Pekkas Link). Aber das kann in IE mit der WinHttpRequest COM-Schnittstelle umgehen.

  2. Wie von Pekka erwähnt, ist das Beste, was Sie verwalten können, GET-Anfragen (mit window.location.search ). POST-Anfragevariablen sind vollständig nicht verfügbar.

  3. Sie können die COM-Schnittstelle für FileSystemObject verwenden lesen & amp; Schreibe lokale Textdateien.

  4. Sie können die WScript.Shell -Schnittstelle% verwenden. co_de% Methode, um ein lokales Programm auszuführen.

Also ist alles, was Sie gefragt haben, erreichbar, wenn Sie den Internet Explorer nutzen wollen. Die COM-Schnittstellen benötigen eine explizite Berechtigung zum Ausführen (a la der gelbe Warnbalken, der angezeigt wird). Sie können auch ein Windows Desktop-Gadget (Vista oder Win 7) oder ein HTML-Anwendung (HTA) um Ihr Ziel zu erreichen.

Wenn Sie all das nicht schaffen, verwandeln Sie Ihren Computer mit XAMPP in einen echten Server und schreiben Sie Ihre Seiten in PHP.

>     
Andy E 23.02.2010 11:51
quelle
2

Ich habe verstanden, was du machen willst Beste Dinge sind folgende

  1. Wählen Sie eine Javascript-Bibliothek (zB: jquery, dojo, yui usw.), ich benutze jquery.this wird einige Ihrer Last
  2. verringern
  3. trotz des Speicherns von Formulardaten in einer lokalen Datei, speichert sie in lokalen Variablen verarbeitet sie und sendet sie an den Server (für die weitere Verarbeitung wie Hinzufügen / Aktualisieren von Datenbanken usw.) mit XMLHttp Anfrage, und wenn Webservice Daten diese Daten zurückgibt und update dom.

Ich zeige Ihnen ein Beispiel

- das ist dom

%Vor%

// In der Realität wird die meiste Arbeit mit json erledigt. Ich habe dir die Grundidee gezeigt, wie man mit js dom manipuliert und Dienste anruft und Dinge ruht. Auf diese Weise vermeiden wir Seiten-Reloads und neue Daten sind für den Betrachter sichtbar.

    
Praveen Prasad 23.02.2010 12:13
quelle
1

Ich würde antworten, dass Sie viel tun können, aber dann sagen Sie im Kommentar zum OP:

"Ich würde gerne ein Gruppenspiel programmieren."

Und so wird meine Antwort nur auf der Client-Seite tun, was Sie in der Lage und bereit sind, auf der Server-Seite zu überprüfen. Vertraue niemals dem Kunden !

Und ich möchte meine Arbeit nicht zweimal machen.

Wenn Sie Dinge auf der Client-Seite tun werden, müssen Sie es zweimal tun, oder Sie unterliegen einem wilden Betrug.

    
Chris Sobolewski 23.02.2010 12:31
quelle
0

Wir hatten die gleiche Frage, als wir unser Projekt starteten.
Am Ende haben wir alles, was wir konnten, auf die Seite von JS verlegt. Hier ist unser Stack:

Das Backend empfängt und sendet ausschließlich JSON-Daten.
Wir verwenden Erlang, aber Python wäre dasselbe. Es behandelt die Authentifizierung / Sicherheit und den Speicher.

Das Frontend ist in HTML + CSS für visuelle Elemente und JS für die Logik.
Eine JS-Template-Engine konvertiert den JSON in HTML. Wir haben PURE gebaut, aber es sind noch viele andere verfügbar. MVC kann ein Overkill auf der Seite des Browsers sein, aber IMO mit einer Template-Engine ist die geringste Trennung, die Sie tun können.

Die Reaktionszeit ist erstaunlich. Sobald die Seite und das JS / CSS geladen sind (frisch oder aus dem Cache), überqueren nur die Daten das Netzwerk für jede Anfrage.

    
Mic 23.02.2010 13:59
quelle