1. #1
    Membre habitué
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 175
    Points : 174
    Points
    174

    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
    37 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    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 : 37 506
    Points : 63 886
    Points
    63 886
    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


    réalisations :www.oxygen-translations.com|www.saftair.com| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 175
    Points : 174
    Points
    174

    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
    37 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    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 : 37 506
    Points : 63 886
    Points
    63 886
    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


    réalisations :www.oxygen-translations.com|www.saftair.com| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 175
    Points : 174
    Points
    174

    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
    37 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    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 : 37 506
    Points : 63 886
    Points
    63 886
    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


    réalisations :www.oxygen-translations.com|www.saftair.com| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 175
    Points : 174
    Points
    174

    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
    37 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    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 : 37 506
    Points : 63 886
    Points
    63 886
    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


    réalisations :www.oxygen-translations.com|www.saftair.com| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 175
    Points : 174
    Points
    174

    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
    37 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    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 : 37 506
    Points : 63 886
    Points
    63 886
    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


    réalisations :www.oxygen-translations.com|www.saftair.com| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  11. #11
    Membre émérite
    Profil pro
    Développeur
    Inscrit en
    mars 2012
    Messages
    1 398
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

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

    Informations forums :
    Inscription : mars 2012
    Messages : 1 398
    Points : 2 291
    Points
    2 291

    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
    37 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    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 : 37 506
    Points : 63 886
    Points
    63 886
    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


    réalisations :www.oxygen-translations.com|www.saftair.com| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  13. #13
    Membre habitué
    Femme Profil pro
    Autre
    Inscrit en
    janvier 2017
    Messages
    99
    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 : 99
    Points : 152
    Points
    152

    Par défaut

    Bonjour,
    Reprenez le code de départ et, après "vfen.document.write(vHtml);", ajoutez ceci :

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    novembre 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2004
    Messages : 175
    Points : 174
    Points
    174

    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 : 90
Taille : 45,2 Ko
    Et cette image qui illustre l'impression envoyée à l'imprimante par FFNom : img2.png
Affichages : 88
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 habitué
    Femme Profil pro
    Autre
    Inscrit en
    janvier 2017
    Messages
    99
    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 : 99
    Points : 152
    Points
    152

    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 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 4 004
    Points : 8 855
    Points
    8 855

    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 habitué
    Femme Profil pro
    Autre
    Inscrit en
    janvier 2017
    Messages
    99
    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 : 99
    Points : 152
    Points
    152

    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 JavaScript
    Réponses: 4
    Dernier message: 25/08/2006, 13h37
  2. window.open avec deux urls
    Par dehbi dans le forum JavaScript
    Réponses: 9
    Dernier message: 22/06/2006, 10h05
  3. window.open IE/FIREFOX
    Par odelayen dans le forum JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 14h32
  4. window.open avec parametre
    Par loleske dans le forum JavaScript
    Réponses: 2
    Dernier message: 21/11/2005, 10h22
  5. window.open et Firefox
    Par Pierrick dans le forum 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