8
votes

Jusqu'où puis-je aller avec JavaScript?

Je dois faire autant que possible du côté du client. En plus de détails, j'aimerais utiliser JavaScript pour coder une interface (qui affiche des informations à l'utilisateur et qui accepte et traite la réponse de l'utilisateur). J'aimerais utiliser le Web Servir juste pour prendre un fichier de date à partir de là, puis pour envoyer un fichier de données modifié. À cet égard, je voudrais savoir si ce qui suit est possible dans JavaScript:

  1. peut lire le contenu d'une page Web externe? En d'autres termes, sur ma machine locale, je suis exécuté JavaScript, qui lit le contenu d'une page Web donnée.

  2. Les valeurs de processus JavaScript peuvent-elles remplies dans un formulaire HTML? En d'autres termes, j'utilise HTML et JavaScript pour générer un formulaire HTML. L'utilisateur est censé remplir le formulaire et appuyer sur un bouton "Soumettre". Ensuite, les données doivent être envoyées au fichier HTML d'origine (pas sur un serveur Web). Ensuite, ces données doivent être traitées par JavaScript.

  3. Au cours de la fin, JavaScript générera un fichier de données local et je souhaite envoyer ce fichier sur un serveur Web PHP. Puis-je le faire avec JavaScript?

  4. Puis-je initier une exécution d'un programme local à partir de JavaScript. Pour être plus précis, le programme local est écrit en Python.

    J'apprécierai les commentaires et réponses.


3 commentaires

"Je dois faire autant que possible du côté du client" - à l'abri des intérêts, pourquoi?


Paul, j'aimerais programmer un match de groupe. Et je veux avoir deux versions du jeu (du point de vue technique). Dans le premier cas, le jeu est basé sur une approche P2P (j'utilise Python pour établir la connexion entre ordinateurs). Dans le second cas, je veux utiliser un serveur Web pour jouer au jeu. Et je ne veux pas faire mon travail deux fois. Donc, je pensais pouvoir utiliser JavaScript pour programmer une interface d'interaction. Et que je peux appliquer cette interface pour les approches P2P et Web-Server (la seule différence est la manière dont les données ont été obtenues, mais les données disponibles sont affichées par le même code).


Point 4: Configurez la machine pour enregistrer un protocole comme "MyAP: //" ou enregistrer un fichier et associer l'extension avec un programme. N'importe lequel d'entre eux nécessitent configurer la machine avant d'exécuter l'application.


5 Réponses :


9
votes
  1. Il pourrait techniquement, mais ne peut pas en réalité en raison du même origine Politique . Ceci s'applique à la fois à la lecture et à la rédaction de contenu externe. Le mieux que vous puissiez faire est de charger une iframe avec une page de domaine différente de celle-ci - mais vous ne pouvez pas y accéder par programmation par programme. Vous pouvez contourner cela dans IE, voir la réponse Andy E.

  2. Oui pour la première partie, MMMM Pas vraiment pour la deuxième partie - Vous pouvez soumettre un formulaire à une page HTML et lire des arguments à l'aide de JavaScript, mais c'est très limité (maximum recommandé Taille des données autour de 1024 octets). Vous devriez probablement avoir toute l'intelligence sur une page.

  3. Vous pouvez générer un fichier localement pour l'utilisateur à télécharger à l'aide de téléchargée < / a>. Générer un fichier et le télécharger sur un serveur ne sera pas possible sans interaction utilisateur. Générer des données et l'envoyer à un serveur lorsque les données postales doivent être possibles, cependant.

  4. C'est très, très difficile. En raison des restrictions de sécurité, dans la plupart des navigateurs, il n'est principalement pas possible sans installer une extension ou similaire. Votre meilleur pari pourrait être des langages de script exclusifs d'Internet Explorer (WScript, VBScript) en association avec le modèle "Zones de sécurité", mais je doute si l'exécution de fichiers locaux est possible même là-bas de nos jours.


6 commentaires

1. Mais je ne veux pas exécuter quelque chose sur un autre site. Je veux juste avoir un accès au contenu d'une page Web disponible publiquement. Je viens de lire (pas exécuter). 2. Quelles sont exactement les limitations quant à la lecture d'arguments? Pour autant que je puisse obtenir les valeurs de la variable, je suis heureux.


1. Oui, toujours pas possible. La façon habituelle de ce fait consiste à utiliser un script de serveur proxy qui fonctionne sur le même domaine que la page demandée et récupère le contenu, mais même cela ne fonctionnera pas si votre page est située sur le PC de l'utilisateur. Vous pouvez utiliser un proxy si cette page dont nous parlons est sur un serveur Web. 2. Limitations de taille - Il est prudent de transporter un maximum d'env. 1024 octets de cette façon.


Bonne réponse, Pekka :-) En ce qui concerne les 1, 3 et 4, je pense que c'est-à-dire est la seule option réelle ici.


@Andy E Cheers :) Je ne savais pas que c'est-à-dire peut faire autant que vous décrivez dans votre réponse, bon travail!


@Pekka: Je traite surtout dans Windows Desktop Gadgets, construit sur le moteur IE. C'est à peu près mon travail de trouver des moyens de faire des choses qui ne sont pas disponibles de manière native ;-)


La stratégie la même origine d'origine peut être remplacée par JSONP (JSON avec rembourrage). Alors jetez un coup d'œil à cela aussi, si le format JSON correspond à vos besoins pour le fichier externe



2
votes

Utilisation d'Internet Explorer avec un fichier local, vous pouvez faire une partie de ce que vous essayez de faire:

  1. Il est vrai que les pages sont limitées par la même politique d'origine (voir le lien de Pekka). Mais cela peut être travaillé dans IE à l'aide de WinHTTPRequest Interface COM.

  2. Comme PEKKA mentionné, le meilleur que vous pouvez gérer est d'obtenir des demandes (en utilisant window.location.search ). Les variables de la demande postale sont complètement inchangées.

  3. Vous pouvez utiliser l'interface COM pour FileSystemObject pour lire et écrire des fichiers texte locaux.

  4. Vous pouvez utiliser le wscript.shell méthode exec d'interface pour exécuter un programme local.

    Donc, à peu près tout ce que vous avez demandé est atteint, si vous êtes prêt à utiliser Internet Explorer. Les interfaces COM nécessiteront une autorisation explicite pour exécuter (une barre d'alerte jaune qui apparaît). Vous pouvez également consulter la création d'un gadget de bureau Windows (Vista ou Win 7) Ou un Application HTML (HTA) atteindre votre objectif.

    omettre tout cela, tournez votre ordinateur en un vrai serveur en utilisant XAMPP et écrire vos pages en php.


2 commentaires

Cependant, vous pouvez faire de loin, bien plus encore avec Firefox à l'aide de XUL, Prism, Weave et de nombreux autres outils. Firefox est conçu pour faire de telles choses et ils travailleront sur n'importe quelle plate-forme.


@ROB: citation xul, prisme et de nombreux autres outils . Tout dans ma réponse est possible juste d'avoir installé Windows. Pas dans le moindre bit compliqué. Nous ne parlons pas de faire loin, beaucoup plus , nous parlons de faire ce que l'OP spécifiée dans sa question et, en réalité, vous pouvez faire à peu près n'importe quoi avec JavaScript et com in IE, Comme je suis sûr que vous pouvez avec FX, XUL, etc. Vous êtes très bienvenu pour fournir votre propre réponse suggérant ces outils :-)



2
votes

voir que j'ai ce que tu veux faire Les meilleures choses font suite à

  1. Choisissez une bibliothèque JavaScript (par exemple: jQuery, dojo, yui, etc.), j'utilise jQuery.Chis diminuera une partie de votre charge
  2. Insistez d'enregistrer des données de formulaire dans un fichier local, stockez-les dans des variables locales les processus et envoyez-les au serveur (pour un traitement ultérieur, comme l'ajout / mise à jour de la base de données, etc.) à l'aide de la demande XMLHTTP, et lorsque le site Web renvoie le processus de données et Mettre à jour DOM.

    Je vous montre un exemple

    - c'est DOM xxx

    // en réalité la plus grande partie du travail est effectué Utiliser JSON. Je vous ai montré l'idée de base de l'utilisation de JS pour manipuler dom et appeler des servies et faire des choses de repos. De cette façon, nous évitons les recharges de page et les nouvelles données sont visibles pour Viewer


2 commentaires

Mais comment Web Server peut renvoyer des données? On m'a dit que JavaScript ne peut rien lire sur le serveur Web.


Pour obtenir des données du serveur, vous devez faire une demande XMLHTTP. Cet objet XMLHTTP a de nombreuses propriétés dont l'URL est une URL où vous spécifiez quelle URL traitera ces données.Lire certains des articulations en ligne sur Ajax, cela vous aidera.



1
votes

Je répondrais à dire dire qu'il y a beaucoup de choses que vous pouvez faire, mais ensuite dans le commentaire à l'OP, vous dites

"J'aimerais programmer un jeu de groupe"

Et ainsi, ma réponse ne devient que du côté du client ce que vous pouvez et disposé à vérifier sur le côté serveur. Ne faites jamais confiance au client !

Et je ne veux pas faire mon travail deux fois.

Si vous allez faire des choses du côté client, vous devrez le faire deux fois, sinon être soumis à une triche rampante.


0 commentaires

0
votes

Nous avions la même question lorsque nous avons commencé notre projet.
À la fin, nous avons déplacé tout ce que nous pouvions sur le côté JS. Voici notre pile:

Le backend reçoit et envoie des données JSON exclusivement.
Nous utilisons Erlang, mais Python serait identique. Il gère l'authentification / la sécurité et le stockage.

le frontage est dans HTML + CSS pour les éléments visuels et JS pour la logique.
Un moteur de modèle JS convertit le JSON en HTML. Nous avons construit pur , mais il y a beaucoup d'autres disponibles. MVC peut être une overcilleuse du côté du navigateur, mais l'OMI à l'aide d'un moteur de modèle est la moindre séparation que vous pouvez faire.

Le temps de réponse est incroyable. Une fois que la page et les JS / CSS sont chargées (frais ou du cache), seules les données traversent le réseau pour chaque demande.


0 commentaires