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 :

firefox refuse de fermer une fenètre


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut firefox refuse de fermer une fenètre
    Bonjour à tous

    Pour une fois (c'est rare) c'est avec firefox et pas avec IE que j'ai un problème...

    j'ai créé une page qui contient le script suivant :

    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
    17
    18
    19
    20
    21
    22
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    "<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>test</title>
    <script>
    function fermerfenetre(){
    var obj_window = window.open('', '_self');
    obj_window.opener = window;
    obj_window.focus();
    opener=self;
    self.close("test.html");
    }
    </script>
    </head>
     
    <body style="font-family:Arial, Helvetica, sans-serif; font-size:12px" onload="window.open('index.php','programme_de_gestion','toolbar=0,menubar=1,top=0,left=0,fullscreen=yes'),fermerfenetre()">
    <h2 align="center">Programme de gestion</h2>
    </body>
    </html>
    tout se passe bien dans IE qui m'ouvre une popup en plein écran et ferme la fenètre qui a appelé la popup sans demande de confirmation.

    En revanche dans firefox la popup s'ouvre en grand mais pas en plein écran et l'onglet qui a ouvert la popup reste ouvert en arrière plan.

    si je regarde dans la consolle d'erreur, j'ai le message suivant :

    "Les scripts ne peuvent pas fermer une fenêtre qui n'a pas été ouverte par un script."

    quelqu'un a-t-il une solution pour ces problèmes ?

    Bonne journée à tous

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    la coloration syntaxique du code aurait dû te mettre sur la voie :
    enlève le " devant le head.

    Ensuite :
    - la méthode open() prend 3 arguments.
    - la méthode close() ne prend aucun argument.
    - dans le onload sépare les instructions par un point-virgule (tu as mis une virgule) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    window.open('index.php','programme_de_gestion','toolbar=0,menubar=1,top=0,left=0,fullscreen=yes'),fermerfenetre()
    - ton script est bien compliqué

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bonjour et merci de ta réponse.

    En ce qui concerne le " avant le <head> il s'agit d'une erreur lors de mon copier/coller , il ne figure pas sur ma page.

    quant à la séparation des arguments par des virgules, je me suis appuyé sur un tuto trouvé sur le web et qui parle de traitement des popups en javascript
    ou les 3 argument sont séparés par des virgules...

    le fait que mon close() contienne un argument vient également d'un tutorial dont je ne trouve plus l'adresse

    mais qui présentait cette syntaxe...

    J'avais auparavant essayé avec close() sans argument... mais sans plus de réussite.

    Je vais donc faire un essai en séparant mes argument par des ;

    Je ferai un post pour indiquer le résultat.

    Merci encore

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    je viens de tester...

    il semble que ce soit bien la virgule qui doive separer les arguments car la consolle d'erreur me retourne le message suivant :

    Erreur : missing ) after argument list
    Fichier source : http://www.monSite.com/test/guides/test.html
    Ligne : 1, Colonne : 23
    Code source :
    window.open('index.php';'programme_de_gestion';'toolbar=0,menubar=1,top=0,left=0,fullscreen=yes'),fermerfenetre()

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    j'avais aussi essayé beaucoup plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>test</title>
    </head>
    <body style="font-family:Arial, Helvetica, sans-serif; font-size:12px" onload="window.open('index.php','programme_de_gestion','toolbar=0,menubar=1,resizable=yes,top=0,left=0,fullscreen=yes');opener=self;self.close()">
    <h2 align="center">Programme de gestion</h2>
    </body>
    </html>
    Mais cela ne fonctionne pas non plus... du moins pas dans firefox.

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Bon j'ai fait quelques tests. Visiblement tu ne peux pas fermer l'opener avec un script.

    J'ai toujours cet avertissement :
    Les scripts ne peuvent pas fermer une fenêtre qui n'a pas été ouverte par un script.

  7. #7
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Et pourquoi ouvrir une popup qui ferme la fenêtre parent? Un simple lien (ou une redirection) ne suffirait-il pas?
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Citation Envoyé par supersnail Voir le message
    Et pourquoi ouvrir une popup qui ferme la fenêtre parent? Un simple lien (ou une redirection) ne suffirait-il pas?
    visiblement Alexdezark veut sa page en plein écran (fullscreen=yes).

  9. #9
    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 640
    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 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    Non non c'est bien IE qui pose problème comme d'habitude ...

    opener est en lecture seule ... et IE permet de le modifier ...

    Une fenetre ne peut être fermée dynamiquement que si elle à un opener !
    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 !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bonjour à tous,

    Excusez-moi je suis un peu débordé (même le dimanche ) c'est pourquoi je n'ai pu prendre connaissance de vos réponses que ce soir.

    je vous explique un peu mieux mon problème.

    J'ai écrit un programme de réservation d'activités qui s'adresse à des revendeurs.

    or, dans certaines fenètres qui inscrivent des données dans la base de données le fait de naviguer avec les flèches de navigation du navigateur (retour en particulier) generent des erreurs, en effet si l'on renvoi à la page les mêmes variables en POST , celle-çi ré-inscrit les mêmes données dans la base de données

    je vous dis pas le bintz quand il s'agit de sommes payées...

    ne pouvant pas désactiver les boutons du navigateur, je peux les faire disparaitre en ouvrant le programme directement dans une popup.

    le problème étant que la fenètre qui a servi à ouvrir cette popup reste ouverte derrière.

    Bon c'est pas l'enfer non plus, je peux en profiter pour mettre des liens vers des vidéos de démo (pas encore fait ça...) ou un mode d'emploi (tiens... pas fait non plus...)

    Bref dans l'immédiat c'est une page blanche...

    j'aurais aimé quelque chose de plus esthetique

    Mais bon va falloir faire avec.

    Voilà toutes vos idées seront les bienvenues.

    et j'oubliais, c'est vrai que j'aurai bien aimé pouvoir ouvrir ma popup directement en fullscreen, mais firefox ne semble pas pouvoir faire cette manip...

    apparement c'est considéré comme trop intrusif d'imposer l'ouverture d'une popup en plein écran.

    Merci encore pour vos réponses et votre attention.

    Bonne fin de journée à tous

  11. #11
    Membre habitué Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Points : 155
    Points
    155
    Par défaut
    Si tu est au début de la réalisation du projet, il serai possible de faire de l'ajax pour régler le problème.

    Vu que tu remplis un élément celon tes besoins, donc page de changement de page.
    Le langage de programmation le plus vieux, le plus optimiser et le plus efficace est l'ADN quelqu'un d'extrêmement intelligent l'a obligatoirement inventé.

  12. #12
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    or, dans certaines fenètres qui inscrivent des données dans la base de données le fait de naviguer avec les flèches de navigation du navigateur (retour en particulier) generent des erreurs, en effet si l'on renvoi à la page les mêmes variables en POST , celle-çi ré-inscrit les mêmes données dans la base de données
    J'ai peut-être raté un épisode, mais qu'est-ce qui t'empêche de vérifier si les données n'existent pas déjà dans ta base ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bonjour à vous et merci de vos réponses.

    pour répondre à hiul dragonfel je dirai que le programme est pour ainsi dire terminé et que mes connaissance en Ajax sont assez limitées.

    J'en connais les principes mais assez peu la syntaxe. il faut vraiment que je me penche un peu plus là dessus car je sais que ça répondrait à pas mal de mes besoins.

    Pour répondre à Bovino, je ne vois pas comment je peux vérifier qu'il ne s'agit pas d'autres données exactement identiques (mm activité, mm prix, mm client,...) que l'on chercherai à entrer de nouveau dans la Bdd.

    il se peut que les données existent déjà et que l'on veuille les rentrer de nouveau, comme il se peut qu'il s'agisse d'une erreur.

    si tu vois une solution qui me permette de faire la différence je suis intéressé.

    une solution pourrait être d'utiliser une variable Session pour vérifier qu'on ne vient pas de telle ou telle page...
    mais je n'aime pas beaucoup les variables session à cause de leur durée de vie limitée.

    peut-être une variable Server (' HTTP_REFERER ') mais mon hébergeur, ce n'est sans doute pas le seul (?) en interdit l'utilisation.

    Je continue de chercher la meilleure solution...

    vos idées sont les bienvenues.

    Bonne journée à tous

  14. #14
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut Et le SQL?
    Pour vérifier que c'est déjà rentré,ça ne coûte rien de faire une requête SQL et de vérifier si on a des enregistrements ou non
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    oui bien sur...

    Mais cela ne m'apporte rien de vérifier s'il y a des enregistrements...

    je sais qu'il y a des enregistrements.

    mon problème c'est qu'il y à une page qui reçoit des données en Post, qui inscrit les données dans la Bdd puis qui redirige l'utilisateur vers une autre page.

    Si quand il se trouve sur cette autre page il utilise le bouton du navigateur pour faire un retour page précédente, il ré-envoie les données en post à la page de validation qui ré-inscrit les données dans la Bdd et dirige l'utilisateur vers la page ou il se trouvait... et ainsi de suite.

  16. #16
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Ce que je voulais dire c'est qu'avant d'enregistrer tes données tu vérifies via un
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT .. FROM tatable WHERE <args>
    que tes données sont uniques ...
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  17. #17
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Sinon, rajoutes un id unique à chaque commande.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bonjour à tous,

    Oui bien sûr mais mes données n'ont pas à être uniques...

    en effet si quelqu'un s'inscrit pour une activité, que la transaction va jusqu'au bout et est inscrite dans la Bdd.

    puis cette personne décide d'inscrire un autre membre de sa famille pour la même activité en utilisant les mêmes coordonnées de paiement...

    les données seront alors exactement identiques mais il n'y a pas lieu que cette transaction soit refusée par la page d'insertion...

    Pour répondre à Bovino, j'ai un ID unique pour chaque entrée (c'est obligatoire dans une Bdd) mais en quoi peut-il m'aider à empêcher d'entrer une transaction non souhaitée ?

    Bonne journée

  19. #19
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'ai bien compris que l'ensemble des données est susceptible d'être identique, c'est pourquoi une solution est de rajouter une donnée qui ne peut pas être identique (donc un id de commande) que tu rajoutes dans ta table et qui te permet de tester s'il s'agit d'un doublon ou d'une autre commande.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Ok Bovino,

    Je vois le principe, mais un identifiant unique sera forcément attribué par la page d'enregistrement dans la BDD...

    Donc, dès qu'une nouvelle requête se présentera à la page, l'enregistrement se fera avec un nouvel identifiant unique...

    et même si je fais :

    $IDTransaction=mysql_insert_id($maConnexion);

    et que je le transmet à la page vers laquelle est redirigé l'utilisateur, le bouton "retour page précédente" ne ferait pas suivre cette variable qui n'existait pas encore au moment de l'appel de la page...

    Pas facile

    J'ai quand même minimisé le risque d'erreur en ouvrant le programme dans une popup, en acceptant les petits problèmes évoqués dans les posts précédents de ce même sujet

    n'hesite pas à me dire si tu vois kekchoz qui cloche dans mon raisonnement

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment fermer une fenêtre enfant MDI ?
    Par DeveloMagaly dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/09/2005, 13h10
  2. [Delphi 6] Empêcher l'ouverture ou fermer une fenêtre
    Par KrusK dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 08/09/2005, 11h55
  3. Fermer une fenêtre depuis une autre...
    Par nicolb dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/03/2005, 10h22
  4. Comment fermer une fenêtre quand la souris et clavier sont inactifs ?
    Par Goldenkiller dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/12/2004, 22h09
  5. Fermer une fenêtre au bout d'un certain temps.
    Par cprogil dans le forum Composants VCL
    Réponses: 5
    Dernier message: 27/11/2003, 18h25

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