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 :

Chrome 37 n'implémente plus window.ShowModalDialog() !


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Points : 122
    Points
    122
    Par défaut Chrome 37 n'implémente plus window.ShowModalDialog() !
    Bonjour,

    Suite à la récente mise à jour de Chrome en version 37, l'affichage de certaines pop up de mon appli ne se fait plus.

    Je gratte, je cherche, et trouve un blog Google expliquant la disparition de la fonction window.ShowModalDialog prévue en septembre.
    Ben voilà, on y est !

    Je suis très ennuyé, car j'utilise cette fonction pour afficher une fenêtre avec un formulaire, et en fonction de ce qui est saisi dans le formulaire, je fais une mise à jour de mon affichage de la page appelante.

    J'ai bien essayé de remplacer ça par un window.open() en adaptant la syntaxe, mais le problème c'est qu'on ne fonctionne plus en mode synchrone et que mon code principal (celui de la page appelante) n'attend pas la fermeture (donc la saisie du formulaire) du pop up pour exécuter l'instruction suivante qui était le test du code retour de la fonction window.ShowModalDialog.

    Quelqu'un a-t-il rencontré ce problème, et comment le résoudre ?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    showModalDialog n'a jamais été un standard. C'est un vieux machin d'IE dont j'avais complètement oublié l'existence.

    Voilà un polyfill pour remettre le support sur Chrome et les autres navigateurs qui ne le supporteraient pas ou plus : https://github.com/niutech/showModalDialog ;
    Sinon il y a des centaines de petites bibliothèques JavaScript pour gérer les fenêtres modales.
    One Web to rule them all

  3. #3
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je n'ai pas de bonnes nouvelles à te donner. Si showModalDialog a été supprimée, il y a fort à parier qu'elle d'abord a été marquée comme dépréciée pendant une période suffisamment longue. Tu aurais dû avoir le temps d'adapter ton code.

    Comme le dit Sylvain, tu peux utiliser une lib ou un framework. Mais sache aussi que le synchrone ce n'est pas vraiment la philosophie de JavaScript. Base-toi plutôt sur une vue qui se rafraîchit dynamiquement. Par exemple, tu peux intégrer le patron de conception Observer dans ton application sans trop d'efforts d'adaptation.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Utiliser un popin à la place d'un popup

    et je rejoins mes camarades
    abandonne le mode synchrone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var dialog = '....';
    var reslut = window.showModalDialog(dialog);
    if (.... == result) {
      //mon code.
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var toto = 45;
    var dialog = '....';
    var win = window.open(dialog);
     
    //lorsque la fenêtre se fermera ...
    win.addEventListener("unload", function(e) {
     //mon code.
    }, false);
    A+JYT

  5. #5
    Membre régulier
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Points : 122
    Points
    122
    Par défaut
    Je vais déjà me pencher sur le polyfill indiqué par SylvainPV, qui à priori va m'éviter de modifier mon code...

    Et si ça ne répond pas à mon besoin, j'explorerais vos autres pistes.


    Merci à vous.

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Attention toutefois avec le polyfill que j'ai donné, il semble qu'il utilise ES6 donc incompatible avec une bonne partie des navigateurs actuels. C'est un mauvais exemple, il doit sûrement exister un polyfill qui couvre une plus grande plage de support.
    One Web to rule them all

Discussions similaires

  1. Non implémenté, plus rien à voir
    Par a028762 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/07/2009, 18h54
  2. "ne repond plus" windows fermeture de session
    Par got2boll dans le forum Windows XP
    Réponses: 1
    Dernier message: 25/05/2009, 17h18
  3. window.showModalDialog sous FireFox
    Par freud dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/03/2008, 21h00
  4. window.showModalDialog et iframe !!
    Par miloud dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/03/2006, 15h08
  5. pb de window.showModalDialog
    Par linux dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/09/2005, 14h49

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