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

WebDev Discussion :

[Anomaly] Fermeture d'un nouvel onglet du navigateur


Sujet :

WebDev

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut [Anomaly] Fermeture d'un nouvel onglet du navigateur
    Bonjour à tous

    Dans la description d'un bouton serveur, la destination du code (afficher des Etats par exemple) s'effectue dans un nouvel onglet du navigateur.
    Mais lorsqu'il n'y a rien à imprimer dans mon Etat la page contenant mon bouton s'affiche à nouveau dans le nouvel onglet en question.

    je voudrais refermer par programmation cet onglet et rester sur ma page initiale lorsqu'il n'y a rien à imprimer dans mes Etats.
    J'ai ainsi cherché en ligne et dans l'aide de Webdev en vain.

    je voudrais donc savoir s'il existe une fonction ou une astuce pour refermer ce nouvel onglet du navigateur.

    Merci de me conseiller
    Et bonne journée à toutes et à tous

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 852
    Points : 5 386
    Points
    5 386
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Une solution est de vérifier en amont (e.g. en exécutant la requête) s'il y a des données à imprimer

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Ok je vais m'orienter sur cette voie
    Merci beaucoup

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Bonjour,
    Une solution est de vérifier en amont (e.g. en exécutant la requête) s'il y a des données à imprimer
    Bonjour, la solution ne marche pas, vu que le nouvel onglet s'ouvre en cliquant sur le bouton, donc avant l'exécution du code de vérification.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par destifano Voir le message
    Bonjour, la solution ne marche pas, vu que le nouvel onglet s'ouvre en cliquant sur le bouton, donc avant l'exécution du code de vérification.
    Effectivement,
    Je cherche toujours une fonction ou un code pouvant remédier à cela

  6. #6
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 852
    Points : 5 386
    Points
    5 386
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    REQ_Client_R.pInitiale=SAI_Initiale
    HExécuteRequête(REQ_Client_R)
    iDestination(iPDFGénérique,"TestClient.pdf")
    iImprimeEtat(ETAT_Client)
    SI HNbEnr(REQ_Client_R)<>0 ALORS
    	FichierAffiche("TestClient.PDF","application/pdf")
    SINON
    	Info("Aucun enregistrements à afficher")
    FIN

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    REQ_Client_R.pInitiale=SAI_Initiale
    HExécuteRequête(REQ_Client_R)
    iDestination(iPDFGénérique,"TestClient.pdf")
    iImprimeEtat(ETAT_Client)
    SI HNbEnr(REQ_Client_R)<>0 ALORS
    	FichierAffiche("TestClient.PDF","application/pdf")
    SINON
    	Info("Aucun enregistrements à afficher")
    FIN
    Merci Beaucoup.
    Le code est très clair et explicite.
    Là où je reste perplexe c'est que le code se situe au niveau d'un bouton dont la destination est un nouvel onglet (voir image ci-jointe)
    (Ce qui implique l'onglet s'ouvre avant même de tester le contenu de la requête. c'est ce qui me dérange dans mon code)

    Nom : Nouvel Onglet.png
Affichages : 513
Taille : 172,5 Ko

    Voici le code du bouton d'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    AI_Immat	= SansEspace(SAI_Immat,sscTout)
    gsImmat		= SAI_Immat
     
    HExécuteRequête(REQ_ContratAssurance,hRequêteDéfaut,gsImmat,gsCompagnie,gnIdAgence)
    SI HNbEnr(REQ_ContratAssurance) <> 0 ALORS
    	Affiche_ETAT_Contrat()
    SINON
    	Erreur("Aucun enregistrement à afficher")
    FIN
    // Affiche_Etat_Contrat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Création du nom de l'Etat
    NomApercu = "cpa_" + gsImmat + "_" + DateSys() + HeureSys() + ".pdf"
    // Création d'un nom de fichier unique
    MonFichierUnique = ComplèteRep(sRépertoireImpression) + NomApercu
    // Destination de l'état : Impression de l'état dans un fichier PDF
    iDestination(iPDF, MonFichierUnique)
    // Impression de l'état
    iInitRequêteEtat(ETAT_Contrat,gsImmat)
    iImprimeEtat(ETAT_Contrat)
    // Affichage de l'état au format PDF - Procédure Navigateur
    FichierAffiche(MonFichierUnique, "application/pdf")
    //Suppression de l'Etat dans le répertoire _web
    fSupprime(MonFichierUnique)
    En FAIT:
    L'onglet s'ouvre avant même que le code ne soit exécuté

  8. #8
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 852
    Points : 5 386
    Points
    5 386
    Billets dans le blog
    1
    Par défaut
    Une solution est de passer ton bouton en "_self" et de traiter l'affichage de l'état dans une nouvelle page vierge (e.g. PAGE_Etat) déclarée en "_blank" (Onglet IHM)
    Le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    REQ_Client_R.pInitiale=SAI_Initiale
    HExécuteRequête(REQ_Client_R)
    SI HNbEnr(REQ_Client_R)<>0 ALORS
    	iDestination(iPDFGénérique,"TestClient.pdf")
    	iImprimeEtat(ETAT_Client)
    	PageAffiche(PAGE_Etat,"TestClient.PDF")
    SINON
    	Info("Aucune données à afficher")
    FIN
    Déclaration de PAGE_Etat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCÉDURE PAGE_Etat(gsaNomFichier est chaîne)
    Initialisation de PAGE_Etat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierAffiche(gsaNomFichier,typeMimePDF)

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Je réfléchis à une autre solution
    Ne serait-il pas possible de griser le bouton d'affichage si HNbEnr(REQ_Client_R) = 0 à travers un 1er bouton qui va tester la requête ?

  10. #10
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 852
    Points : 5 386
    Points
    5 386
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SINTECH Voir le message
    Ne serait-il pas possible de griser le bouton d'affichage si HNbEnr(REQ_Client_R) = 0 à travers un 1er bouton qui va tester la requête ?
    Si, mais cela obligerait l'utilisateur à cliquer sur Vérifier (pour dégriser) puis sur Afficher. C'est lourd et pas vraiment intuitif. Le fait de fermer la page blanche s'il n'y a pas d'enregistrement est déjà plus intuitif.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Si, mais cela obligerait l'utilisateur à cliquer sur Vérifier (pour dégriser) puis sur Afficher. C'est lourd et pas vraiment intuitif. Le fait de fermer la page blanche s'il n'y a pas d'enregistrement est déjà plus intuitif.
    Ok je vois Merci infiniment pour le conseil

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Une solution est de passer ton bouton en "_self" et de traiter l'affichage de l'état dans une nouvelle page vierge (e.g. PAGE_Etat) déclarée en "_blank" (Onglet IHM)
    Le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    REQ_Client_R.pInitiale=SAI_Initiale
    HExécuteRequête(REQ_Client_R)
    SI HNbEnr(REQ_Client_R)<>0 ALORS
    	iDestination(iPDFGénérique,"TestClient.pdf")
    	iImprimeEtat(ETAT_Client)
    	PageAffiche(PAGE_Etat,"TestClient.PDF")
    SINON
    	Info("Aucune données à afficher")
    FIN
    Déclaration de PAGE_Etat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCÉDURE PAGE_Etat(gsaNomFichier est chaîne)
    Initialisation de PAGE_Etat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierAffiche(gsaNomFichier,typeMimePDF)
    j'ai essayé cette solution mais le probleme persiste, j'ouvre la page avec pageaffiche mais aucun moyen de l'ouvrir dans un nouvel onglet en code serveur

  13. #13
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 852
    Points : 5 386
    Points
    5 386
    Billets dans le blog
    1
    Par défaut
    Est-elle bien déclarée en "_blank" ?

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Est-elle bien déclarée en "_blank" ?
    Bonsoir Frère
    Oui, la destination est belle et bien déclarée en "_Blank"

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par destifano Voir le message
    j'ai essayé cette solution mais le problème persiste, j'ouvre la page avec pageaffiche mais aucun moyen de l'ouvrir dans un nouvel onglet en code serveur
    Pareil pour moi, j'ai tout essayé

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Voila une solution que j'ai trouvé dans un autre forum, merci au utilisateur :

    Bonjour,
    Ce qu'il faut faire dans ce cas, c'est un traitement AJAX dans un 1er temps :
    Ce traitement va gérer la vérification des données et renvoyer un message d'erreur a l'utilisateur si c'est pas bon.
    Si c'est ok il, il génère le fichier a télécharger et il sotck le nom du fichier dans un champ de saisie invisible par exemple.

    A la fin du traitement en question, utiliser la méthode navigateur "Apres retour ajax" pour vérifier si le champ de saisie invisible est vide ou pas, si il n'est pas vide, exécuter le traitement d'un bouton (lui aussi invisible) dont le but est uniquement de faire télécharger le fichier.

    SI SAI_Fichier <> "" ALORS
    ExécuteTraitement(BTN_DL_DOC,trtClic)
    FIN


    Le code du bouton (serveur, non ajax) BTN_DL_DOC contient le fichier FichierAffiche()
    Dans les paramètres du bouton, il faut indiquer que le code s'exécute dans un nouvel onglet.

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 142
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par destifano Voir le message
    Voila une solution que j'ai trouvé dans un autre forum, merci au utilisateur :

    Bonjour,
    Ce qu'il faut faire dans ce cas, c'est un traitement AJAX dans un 1er temps :
    Ce traitement va gérer la vérification des données et renvoyer un message d'erreur a l'utilisateur si c'est pas bon.
    Si c'est ok il, il génère le fichier a télécharger et il sotck le nom du fichier dans un champ de saisie invisible par exemple.

    A la fin du traitement en question, utiliser la méthode navigateur "Apres retour ajax" pour vérifier si le champ de saisie invisible est vide ou pas, si il n'est pas vide, exécuter le traitement d'un bouton (lui aussi invisible) dont le but est uniquement de faire télécharger le fichier.

    SI SAI_Fichier <> "" ALORS
    ExécuteTraitement(BTN_DL_DOC,trtClic)
    FIN


    Le code du bouton (serveur, non ajax) BTN_DL_DOC contient le fichier FichierAffiche()
    Dans les paramètres du bouton, il faut indiquer que le code s'exécute dans un nouvel onglet.
    Merci pour le tuyau, je trouve la démarche un peu trop complexe mais on verra bien ce que ca donne

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