IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

window.open() d'une fenêtre en text/plain


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 44
    Points
    44
    Par défaut window.open() d'une fenêtre en text/plain
    Bonjour / bonsoir,


    Comme je ne connais quasiment rien en Javascript, on m'a développé un script dont l'objectif est d'ouvrir une fenêtre pour afficher un texte, dans le but de sauver le contenu dans un fichier texte en faisant "Enregistrer Sous".
    Je ne sais pas si c'est la meilleure solution, mais elle fonctionnait très bien.

    L'idée est la suivante : on remplit les champs d'un formulaire et quand on appuie sur un bouton, un traitement crée une chaîne depuis les données du formulaire et cette chaîne est écrite dans une nouvelle fenêtre.

    Le code ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var strHTML = creationChaineDepuisDonnees();
    var OpenWindow = window.open('data:text/plain;charset=iso-8859-1;,' + unescape(encodeURIComponent(escape(strHTML))));
    Pendant des années, tout cela a très bien fonctionné, du moins dans Firefox, l'appui sur le bouton créait un fenêtre/onglet dont l'"URL" (en l'occurrence fort long) était
    "data:text/plain;charset=iso-8859-1;,<TEXTE>"
    et quand je faisais Crtl+S, une fenêtre s'ouvrait proposant d'enregistrer le contenu de ma fenêtre sous le format "Text Document", il me restait juste à renseigner le nom.

    Depuis quelques temps (un mois minimum, cinq mois maximum), le fait d'appuyer sur le bouton m'ouvre et me ferme systématiquement l'onglet dans la foulée. Quand j'essaie sous Edge, l'onglet ne se referme pas mais il est vide (about:blank).

    J'ai fait des recherches ça et là sur le net, je n'ai trouvé aucune explication à mon problème si ce n'est à demi-mots que cette façon de faire avait l'air de vouloir être proscrite par les éditeurs de navigateurs (pour quelle raison, je n'ai pas bien compris). J'ai essayé de bidouiller des solutions alternatives à base de window.document.write() mais il refuse absolument de considérer ma page comme étant du texte.

    Bref, mon code est-il problématique ? Y a-t-il un moyen de faire autrement ?

    Merci pour vos lumières, sachant que l'auteur de ce script est, dirons-nous, hors d'atteinte de ma part .

    Et bonne année à tous.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    vous pouvez essayer de passer par un lien créé par JavaScript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		// données
     
    		var contenu = "azérty123";
    		var typeContenu = "text";
    		var nomFichier = "sauvegarde " + (new Date()).toLocaleString() + ".txt";
     
     
    		// lancement du téléchargement
     
    		var lien = document.createElement("a");
     
    		document.body.appendChild(lien);
     
    		lien.href = "data:" + typeContenu + "," + encodeURIComponent(contenu);
    		lien.download = nomFichier;
    		lien.click();

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Je suis étonné par les paramètres de votre fonction window.open(). Peut-être que le problème vient de là?
    https://developer.mozilla.org/fr/doc...PI/Window/open

    Je vous propose ce petit bout de code.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <!DOCTYPE html>
    <html>
     
    <head>
    <meta charset="utf-8">
    <script>
    function ouvrir() {
            var strHTML = "azerty";
    //      var OpenWindow = window.open('data:text/plain;charset=iso-8859-1;,' + unescape(encodeURIComponent(escape(strHTML))));
            var largeur=screen.width/2;
            var hauteur=screen.height/1.4;
            var pos_x=(screen.width-largeur)/2;
            var pos_y=(screen.height-hauteur)/3;
            var dimensions='width='+largeur+',height='+hauteur;
            var proprietes='menubar=no,toolbar=no,directories=no,location=no,status=no,scrollbars=yes';
            var OpenWindow=window.open('','',dimensions+proprietes);
            OpenWindow.moveTo(pos_x,pos_y);
            OpenWindow.document.open();
            OpenWindow.document.write(strHTML);
            OpenWindow.document.close();
    }
    </script>
    </head>
     
    <body>
    <input type="button" onclick="ouvrir();" value="OK">
    </body>
     
    </html>

Discussions similaires

  1. window open - taille de fenêtre
    Par ritchouone dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/02/2008, 16h17
  2. Window.opener recupérer une variable
    Par JoloKossovar dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/01/2008, 18h39
  3. Comment s'assurer que "window.open" ouvre une nouvelle fenêtre
    Par lodan dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 14/03/2007, 11h12
  4. window.open & titre de fenêtre
    Par eraim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/05/2006, 11h31
  5. Utiliser "window.status" avec une fenêtre modale
    Par Giill dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/11/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo