Pb onblur & <div> & fermeture fenêtre [Résolu]

dervoyage 7 Messages postés vendredi 5 septembre 2008Date d'inscription 14 septembre 2008 Dernière intervention - 11 sept. 2008 à 19:19 - Dernière réponse : cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention
- 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 ???
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
dervoyage 7 Messages postés vendredi 5 septembre 2008Date d'inscription 14 septembre 2008 Dernière intervention - 14 sept. 2008 à 10:48
3
Merci
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>

Merci dervoyage 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de dervoyage
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 12 sept. 2008 à 10:43
0
Merci
Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 12 sept. 2008 à 10:52
0
Merci
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], <!--
Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 12 sept. 2008 à 12:37
0
Merci
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], <!--
Commenter la réponse de cs_bultez
dervoyage 7 Messages postés vendredi 5 septembre 2008Date d'inscription 14 septembre 2008 Dernière intervention - 12 sept. 2008 à 13:37
0
Merci
<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 ?
Commenter la réponse de dervoyage
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 12 sept. 2008 à 14:33
0
Merci
<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], <!--
Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 12 sept. 2008 à 15:03
0
Merci
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], <!--
Commenter la réponse de cs_bultez
dervoyage 7 Messages postés vendredi 5 septembre 2008Date d'inscription 14 septembre 2008 Dernière intervention - 12 sept. 2008 à 16:31
0
Merci
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 ?
Commenter la réponse de dervoyage
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 sept. 2008 à 08:38
0
Merci
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], <!--
Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 sept. 2008 à 09:42
0
Merci
j'ai omis de préciser : hta1.hta ouvre avec window.open hta2.htm
CordialementBul[mon Site][M'écrire], <!--
Commenter la réponse de cs_bultez
dervoyage 7 Messages postés vendredi 5 septembre 2008Date d'inscription 14 septembre 2008 Dernière intervention - 13 sept. 2008 à 11:24
0
Merci
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.
Commenter la réponse de dervoyage
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 sept. 2008 à 12:44
0
Merci
>> 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], <!--
Commenter la réponse de cs_bultez
dervoyage 7 Messages postés vendredi 5 septembre 2008Date d'inscription 14 septembre 2008 Dernière intervention - 13 sept. 2008 à 14:22
0
Merci
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.
Commenter la réponse de dervoyage
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 13 sept. 2008 à 14:54
0
Merci
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], <!--
Commenter la réponse de cs_bultez
dervoyage 7 Messages postés vendredi 5 septembre 2008Date d'inscription 14 septembre 2008 Dernière intervention - 13 sept. 2008 à 15:12
0
Merci
Merci pour ton aide très pertinente, a+.
Commenter la réponse de dervoyage
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 14 sept. 2008 à 14:43
0
Merci
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], <!--
Commenter la réponse de cs_bultez

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.