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 avec firefox


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut window.open avec firefox
    Bonjour,
    Le code ci-après fonctionne très bien sous google chrome Version 57.
    Toutefois sous Firefox (version52) l'ouverture du "popup" empêche le window.print de s'exécuter et je ne comprends pas pourquoi ?
    Est ce que quelqu'un pourrait me sortir de ce mauvais pas ?
    D'avance merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function f_imprimer_bloc() {
    var vHtml = '<!DOCTYPE html>';
    vHtml +='<html><head><title></title><link rel="stylesheet" type="text/css" href="./css/styleimpression.css" ></head><body>';
    vHtml += '<table class="tbu1"><tr><td>coucou</td></tr></table>';
    vHtml +='</body></html>';
    vfen = window.open("", "", "height=500, width=600,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
    vfen.document.write(vHtml);
    setTimeout(function(){vfen.window.print()},500);
    setTimeout(function(){vfen.window.close()},3000);
    return true;
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    le window open envoie le focus sur la page qui s'ouvre...
    le code de print doit être intégré dans la page du popup ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut
    J'ai intégré le code dans le popup mais le pb est le même.
    Le problème semble venir du setTimout . Dans firefox le setTimeout bloque l'exécution du reste du code.

    Dans firefox le popup s'ouvre bien mais empêche la boite de dialogue d'impression de s'afficher. Quand je ferme le popup la boite d'impression apparait ??
    Quand je supprime le setTimeout le window.print se lance mais l'impression est vide car la boite de dialogue d'impression s'affiche avant le popup .
    En fait le setTimeout est là pour laisser le temps au popup de charger son contenu .
    Espérant de n'avoir pas été trop confus

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    On peut voir comment tu as
    intégré le code dans le popup
    ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut
    Voici comment j'ai fait . ça fonctionne avec Chrome mais dans firefox le popup reste à l'ecran et empêche l'apparition de la boite de dialogue d'impression

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function f_imprimer_bloc() {
    var vHtml = '<!DOCTYPE html>';
    vHtml +='<html><head><title></title><link rel="stylesheet" type="text/css" href="./css/styleimpression.css" ></head><body>';
    vHtml += '<table class="tbu1"><tr><td>coucou</td></tr></table>';
    vHtml +='<script type="text/javascript">setTimeout(function(){window.print()},500);</script></body></html>';
    vfen = window.open("", "", "height=500, width=600,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
    vfen.document.write(vHtml);
    SetTimeout(function(){vfen.window.close()},3000);
    return true;
    }
    merci de votre aide

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    essaye comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function f_imprimer_bloc() {
    var vHtml = '<!DOCTYPE html>';
    vHtml +='<html><head><title></title><link rel="stylesheet" type="text/css" href="./css/styleimpression.css" ></head><body>';
    vHtml += '<table class="tbu1"><tr><td>coucou</td></tr></table>';
    vHtml +='<scr'+'ipt type="text/javascript">setTimeout(function(){window.print()},500);</script></body></html>';
    vfen = window.open("", "", "height=500, width=600,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
    vfen.document.write(vHtml);
    SetTimeout(function(){vfen.window.close()},3000);
    return true;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut
    Je viens d'essayer et pas mieux.
    En même temps je ne suis pas trop étonné
    car entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vHtml +='<script type="text/javascript">setTimeout(function(){window.print()},500);</script></body></html>';
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vHtml +='<scr'+'ipt type="text/javascript">setTimeout(function(){window.print()},500);</script></body></html>';
    y a pas trop de différence .

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    quand tu visualises le code source de la popup tu vois le script ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut
    1) Quand je choisis le menu code source de la page il y a le code html qui s'affiche.
    Quand je copie ce même code pour faire un test dans un fichier html , la page s'exécute normalement et la boite de dialogue d'impression s'affiche.

    2) Quand le popup est ouvert et que je fais examiner l'élément , il n' y a aucune information qui apparaît dans "l'inspecteur de style et du dom"

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    pareil pour la fermeture... il faut que ce soit le popup qui appelle une fonction de fermeture de la fenêtre ouvrante.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Tu ne peux avoir 2 modales box en même temps à l'écran
    Si la réponse vous a aidé, pensez à cliquer sur +1

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    modales ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Reprenez le code de départ et, après "vfen.document.write(vHtml);", ajoutez ceci :

  14. #14
    Membre éclairé
    Profil pro
    maçon
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : maçon

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 679
    Points
    679
    Par défaut
    je pense que le problème est insoluble.
    En fait quand je met le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript">window.print();window.close();</script>;
    dans le popup , cela fonctionne sous Chrome et FF . Toutefois FF affiche le popup avec le bon style mais l'impression est différente du popup affiché ??
    pour etre plus clair voici l'image représentant le popup mise en forme :
    Nom : img1.png
Affichages : 849
Taille : 45,2 Ko
    Et cette image qui illustre l'impression envoyée à l'imprimante par FFNom : img2.png
Affichages : 923
Taille : 20,9 Ko
    Cherry's on the cake , si je met un setTimeout sur le window.print Firefox reste figé sur le popup et n'affiche la boite de dialogue d'impression que lorsque l'on ferme le popup manuellement .
    <script type="text/javascript">setTimeout(window.print(),500);window.close();</script>;
    Cherry's on the cherry's on the cake ça fonctionne sous edge et chrome .
    Merci en tout cas à tout ceux qui m'ont aidé .

  15. #15
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    J'ai l'impression que vous n'avez pas testé ce que j'ai dit.
    Je recommence :
    On reprend le code de départ et on ajoute après le "document.write" :
    Si le style ne passe pas à l'impression, c'est certainement parce que cette instruction est absente.
    Avec cette instruction, je pense même qu'il n'y aura plus besoin de "setTimeout".

    Si besoin, je peux faire un exemple complet fonctionnel sous Firefox 52.

  16. #16
    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
    une petite note sur window.open
    cette fonction retourne une référence à la fenêtre ouverte ou null
    il faut donc tester la valeur retournée avant de l'utiliser.

    enfin les navigateurs implémente la fonction mais cela ne signifie pas qu'une fenêtre sera ouverte ni que les propriétés passées en paramètre seront pris en compte.
    un grand nombre de navigateurs (tous les mobiles) ne tiennent par exemple pas compte des dimensions.
    une détail important il est préférable de mettre un nom lors de l'ouverture. quelques navigateurs n'ouvrent pas la fenêtre mais un onglet s'il n'y a pas de nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function f_imprimer_bloc() {
    var vHtml = '<!DOCTYPE html>';
    vHtml +='<html><head><title></title><link rel="stylesheet" type="text/css" href="./css/styleimpression.css" ></head><body>';
    vHtml += '<table class="tbu1"><tr><td>coucou</td></tr></table>';
    vHtml +='<scr'+'ipt type="text/javascript">setTimeout(function(){window.print()},500);';
    vHtml += '<table class="tbu1"><tr><td>coucou</td></tr></table>';
    vHtml +='setTimeout(function(){window.close()},3000);';
    vHtml += '<table class="tbu1"><tr><td>coucou</td></tr></table>';
    vHtml +='</script></body></html>';
    vfen = window.open("", "vfen", "height=500, width=600,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
    if (vfen) {vfen.document.write(vHtml);}
    return true;
    attention tu as écrit
    SetTimeout(function(){vfen.window.close()},3000);
    à la place de
    setTimeout(function(){vfen.window.close()},3000);
    A+JYT

  17. #17
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    De toute façon, à mon avis, l'impression ne fonctionnera pas comme il faut avec le fichier css sur Firefox sans le "document.close".
    Quand il dit :
    Quand le popup est ouvert et que je fais examiner l'élément , il n' y a aucune information qui apparaît dans "l'inspecteur de style et du dom"
    ça me paraît assez symptomatique.

    Je précise que le "document.close" doit survenir avant l'appel de la fonction d'impression.
    Dans le cas où l'appel de l'impression figure dans la chaîne passée au "document.write", on peut soit le différer avec un "setTimeout" (comme c'est déjà le cas) ou un "onload", soit enchaîner les instructions "document.close();window.print();".

Discussions similaires

  1. [debutant] utilisé window.open avec <form>
    Par Bayar dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/08/2006, 13h37
  2. window.open avec deux urls
    Par dehbi dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/06/2006, 10h05
  3. window.open IE/FIREFOX
    Par odelayen dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 14h32
  4. window.open avec parametre
    Par loleske dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/11/2005, 10h22
  5. window.open et Firefox
    Par Pierrick dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 06/10/2005, 16h53

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