Pb onblur & <div> & fermeture fenêtre

Résolu
dervoyage Messages postés 7 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 14 septembre 2008 - 11 sept. 2008 à 19:19
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 14 sept. 2008 à 14:43
Voici mon code :




<html>

<head>

<title>Essai</title>

</head>







</html>



je souhaite fermer cette fenêtre si elle perd son focus, par exemple si l'utilisateur fait un <tab> ou toute autre action. Le problème est que si l'utilisateur clique dans la couche "bloc" le système déclenche aussi le onblur, donc le close(), et ... je ne veux pas. J'ai besoin de la couche bloc.



Existe-t-il une solution ???

16 réponses

dervoyage Messages postés 7 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 14 septembre 2008
14 sept. 2008 à 10:48
J'ai résolu le pb du bouton droit de la souris sur la
voici le source en hta :
il fallait ajouter dans le un onfocus et onclick = "window.focus();"
<html>
<head>
<title>Essai</title>
<HTA:APPLICATION ID = "Test2"
APPLICATIONNAME "Test" WINDOWSTATE "normal" MAXIMIZEBUTTON = "yes" MINIMIZEBUTTON = "yes" SELECTION="no">
<script LANGUAGE=JavaScript>
var foc1=true;
var foc2=true;

function attend() {
if (foc2) {
if (foc1) window.close();
else foc1 = true;}
else foc2 = true;
}
function boutondroit() {
if ((event.button 2) || (event.button 3) || (event.button == 4)) {
foc2 = false;
alert('Bouton interdit');
return false;
}
}
</script>
</head>




</html>
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 sept. 2008 à 10:43
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 sept. 2008 à 10:52
dieu me tripote... mon message disparut corps et bien dans les méandres
de CodesSources ou celles du Web ?
je reposte alors....

bonjour,

donc, ce que tu voudrais, finalement, c'est
evt.cancelBubble = true; et/ou evt.stopPropagation(); mais du parent vers l'enfant quoi....

je ne sais pas s'il existe quelque choses, à part le faire manuellement...

onfocus sur le div ==>>> ne pas traiter le onblur sur le body
onblur sur le body : il faut traiter ? non==> remettre en état, oui : ne rien faire
( ou pas loin )
une ch'tiote variable globale à mettre à true ou false et à tester... quand il faut quoi.....

Cordialement     Bul  [mon Site] [M'écrire], <!--
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 sept. 2008 à 12:37
complément : il faudra probablement un setTimeout dans le onblur du body,
puisqu'il doit être déclenché avant le onfocus
ou alors tester qui a le focus....
Cordialement     Bul  [mon Site] [M'écrire], <!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dervoyage Messages postés 7 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 14 septembre 2008
12 sept. 2008 à 13:37
<html>
<head>
<title>Essai</title>
<script LANGUAGE=JavaScript>
var test = 0;
</script>
</head>




</html>

J'ai ajouté des alertes pour connaître l'ordre des événements.
Lorsque l'on entre dans la page, si je clique sur
IE déclenche onblur puis onfocus.
Puis,
Si je fais un simple clic sur , puis clique sur
, IE déclenche onfocus puis onblur.
Si je fais un double clic sur , puis clique sur
, IE déclenche onblur puis onfocus.

je ne comprends plus rien à l'ordre d'exécution des événements ?

peut-on connaître qui a déclenché un événement ?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 sept. 2008 à 14:33
<html>

<head>

<title>Essai</title>

<script>

    var euh=true;

    function attend()

    {   if (euh) window.close();

        else     euh=true;   

    }

</script>

</head>

</html>


pas testé ni réellement  ni avec tous les navigateurs... à creuser ?
sinon, faut voir ça autrement....

Cordialement     Bul  [mon Site] [M'écrire], <!--
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 sept. 2008 à 15:03
pour connaitre l'élément qui a le focus :
function msg(e)
{   var t;

    if ("activeElement" in document)

          {  t = document.activeElement;  }     

    else  {  t = e ? e.explicitOriginalTarget : null;  }
    return t;
}

alert(msg(event).id); // .id par exemple !

Cordialement     Bul  [mon Site] [M'écrire], <!--
0
dervoyage Messages postés 7 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 14 septembre 2008
12 sept. 2008 à 16:31
J'ai essayé la fonction attend(), ça fonctionne sauf que maintenant sur
lorsque je vais un <tab> la fenêtre ne se ferme pas. Donc j'ai ajouté sur le
onclick="window.focus();" et ca fonctionne. Mais maintenant si je clique sur le bouton droit de la souris suivi d'un <tab> la fenêtre ne se ferme pas ???

Comme tu me parais très compétent j'en profite.
J'ai un HTA1 qui lance un HTA2 par un RUN Activex pour les messages de sécurité.
Je souhaite que HTA1 recoit une donnée de HTA2. Comment puis-je passer cette donnée.
Par un fichier texte, par un cookie ou par la base des registres, je ne sais pas quelle solution choisir, c'est pour faire un dvd et ca doit tourner sur la machine client sans problème de sécurité.
As- tu une idée ?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 08:38
je n'ai testé pas testé avec FF, puisqu'il refuse de fermer la fenêtre dans ces conditions
( il faudrait tester dans un pop-up )
mais avec IE, Opera, safari... ça baigne.

normalement on ne pose qu'une question par sujet ;o)

pourquoi ne pas faire un window.open depuis le hta1
            pour lancer le hta2 ? si des activeX sont
            nécessaires, met les dans hta1 et hta2
            appellera des fonctions de window.opener.hta1

CordialementBul[mon Site][M'écrire], <!--
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 09:42
j'ai omis de préciser : hta1.hta ouvre avec window.open hta2.htm
CordialementBul[mon Site][M'écrire], <!--
0
dervoyage Messages postés 7 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 14 septembre 2008
13 sept. 2008 à 11:24
Pour le 1er pb, ça fonctionne sauf si l'utilisateur clique avec le bouton droit de la souris dans la
et qu'ensuite il fasse <tab> dans ce cas la fenêtre ne se ferme pas. J'ai essayé beaucoup de chose, trapper le bouton droit, ajouter des euh=false, je n'arrive pas à fermer cette foutu fenêtre. Sinon dans les autres cas elle se ferme !!!

Pour le 2eme pb, qui est lié au 1er, j'utilise le HTA donc IE.
HTA2 doit être lancé en pleine écran donc si j'utilise :
un open html, j'ai des messages de confirmation pour l'utilisation des scripts.
un open hta, j'ai le message voulez-vous enregistrer ou exécuter le hta.
d'où le run hta, pour ne plus avoir à confirmer les messages.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 12:44
>> j'ai des messages de confirmation pour l'utilisation des scripts.
il faut un paramétrage de IE, rien d'autre
clique droit sur la bandeau d'erreur, tout est expliqué ( de mémoire d'Alzheimer )
sinon oui, window.open d'un hta propose d'enregistrer ou d'exécuter
Cordialement     Bul  [mon Site] [M'écrire], <!--
0
dervoyage Messages postés 7 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 14 septembre 2008
13 sept. 2008 à 14:22
oui, je sais mais le dvd que je suis entrain de créer n'est pas que pour moi et je ne souhaite pas que l'utilisateur doive modifier ces parametres pour executer mon appli d'où mon choix.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 14:54
si un utilisteur refuse le javascript, ou refuse les activex, ou refuse... je ne sais quoi
pas de solution en .htm

en .hta... pas même sûr... faudra contrôler ! et là, mon foie c'est comme un exécutable
    dans d'autres langages.
    donc... ne pas ouvrir une autre page ( iframe, div .... )
    ou transmettre les données par cookie, dans un fichier, par l'url, par ce que tu veux...

Cordialement     Bul  [mon Site] [M'écrire], <!--
0
dervoyage Messages postés 7 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 14 septembre 2008
13 sept. 2008 à 15:12
Merci pour ton aide très pertinente, a+.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 sept. 2008 à 14:43
ah c'est vrai... j'ai oublié d'aller jusqu'au bout de la question !
    tu as résolu : bravo et merci de nous donner une solution,
Cordialement    Bul  [mon Site] [M'écrire], <!--
0
Rejoignez-nous