External.menuArguments et l'evenement onmouseover sous IE

xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007 - 22 août 2007 à 09:26
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 23 août 2007 à 10:53
Bonjour,


Je viens solliciter votre aide à propos des evenements "onmouseover" et "onmouseout", mon probleme est simple je n'arrive pas à partir d'une page "enfant" (ouverte grace à un clique droit sur la page mere http://msdn2.microsoft.com/en-us/library/aa753589.aspx) déclencher une fonction spécifique lors d'un mouseover sur un input de type "text" par exemple.


Voilà mon code:





<HTML>
<head>
<SCRIPT LANGUAGE="JavaScript">
var doc = external.menuArguments.parent.document;







function Test(el) {
 alert(this.name);
}







function initB() {
     var listobj = doc.getElementsByTagName('INPUT');
        for(j=0;j != listobj.length;j++){      
          listobj[j].setAttribute("onmouseover",Test);
          listobj[j].setAttribute("onmouseout",Test);
        }
}
</SCRIPT>
</head>


</HTML>






On passant le curseur de la sourie sur la page mére la fonction "Test" n'est pas déclenché. En plus j'ai testé le même code en ouvrant directement la page html sous IE et en utilisant :





var doc = document;

au lieu de var doc = external.menuArguments.parent.document;
et ça marche parfaitement.


any help? thanx...

18 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 09:48
bonjour,

    tu n'est pas en train d'essayer de faire une "extension d'Internet Explorer" ?
    parce que


external.menuArguments...


ça me semble typique.

    si oui : je me bat depuis 3 jours pour faire la même chose !
       j'ai trouvé un paliatif
            avec external.menuArguments.event.srcElement.parentElement.innerHTML
       mais ce n'est qu'un paliatif ( qui ne répond pas à tous mes besoins ! )

    si non, tu peux expliquer dans quel contexte tu utilises ?



<hr />



Cordialement                Bul             [mon Site]         [M'écrire]<hr />

En général, c'est absurde de généraliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 09:52
ou alors c'est un paramètre que tu passes à une fenêtre ouverte avec ShowModalDialog ?

page mère :

    var prm=new Array();
    prm[0]=un objet, du texte, ce qu'on veut;
    window.showModalDialog('Flux.htm',prm,...

pop-up :

    var Lst=dialogArguments[0]...

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
22 août 2007 à 09:52
Bonjour,
les inputs que tu veux lister sont dans la page mère ? si oui,
window.opener.document.getElementsByTagName("input");

sinon,
juste document.getElementsByTagName("input");

ensuite, je ne vois pas l'intéret d'utiliser setAttribute, même si je suis sur que ca vient pas de cela.
var listobj = window.opener.document.getElementsByTagName("input");for(var j 0, length listobj.length; j < length; j++){     
  listobj[j].onmouseover = Test;
  listobj[j].onmouseout = Test;
}

Cdlt,
Pierrick
0
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
22 août 2007 à 09:54
Oups, croisement de message, bonjour bultez,
a quoi correspond external.menuArguments ?
Merci,
Bonne journée
0

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

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 09:59
opener c'est pour une page ouverte avec window.open.
pour une page ouverte avec shomodaldialog ( exclusif IE ), on lui passe
    les paramètres comme j'ai indiqué et on les utilise avec menuArguments.
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 10:03
dieu me tripote ! que d'erreurs de ma part ! ( on dira d'inattention !! )
    il fallait lire : dialogArguments avec ShowModalDialog !
    external.menuArguments... je n'ai vu que dans les "extensions IE"
<hr />



Cordialement            Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007
22 août 2007 à 10:05
Oui, en effet j'essaye de faire une "extension pour Internet explorer". je lance un script js à partir du menu contextuel d'internet explorer d'où le fait d'utiliser l'attribut menuArguments de l'objet external (au lieu de window.opener.document).
je voudrais que mon script attache tout simplement une fonction que j'ai appelé infobulle (qui affichera les propriétés de l'element survolé) sur tout les elements de type input, select..etc de la page initale. j'ai essayé tt les méthodes possibles et compatibles IE pour surcharger l'evenement onmouseover tels que:
setAttribute("onmouseover",..), .onmouseover = ... , addEvent ..etc.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 10:14
et bien... pas encore résolu de mon coté.
    on doit faire un gros lapsus, car les fonctions ne sont
       pas déclenchées si on les fait comme ça.

comme d'ailleurs pas résolu non plus :
    l'appel à des fonctions,
    la communication si c'est possible entre la page et le script d'extension
    ...
   

comme je disais un paliatif :

var prnt=external.menuArguments.event.srcElement.parentElement;
prnt.innerHTML+="......"

mais je ne sais même pas appeler une fonction dans ce cas !
        obligé de faire directement !

    au fait, dans qu'on y est : tu as de la doc la dessus ? 
            perso, quasiment rien trouvé : alors dur, dur !

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]<hr />En général, c'est absurde de généraliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 10:21
>>

e voudrais que mon script attache tout
simplement une fonction que j'ai appelé infobulle
>>(qui affichera
les propriétés de l'element survolé) sur tout les elements de type
input, select..etc de la page initale.

    tu peux faire ça avec IE7Pro... ( c'est dans les exemples et les script utilisateurs
            regarde donc ShowPasswordOnMouseOver.ieuser.js )

    pas la même chose que les extensions, mais ça peut le faire...
      





<hr />




Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
0
xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007
22 août 2007 à 10:25
Je me dis peut être que c'est normal que les fonctions ne se déclenchent pas, car elles sont tt simplement déclarées dans un fichier externe. non?
Ma question maintenant est comment fait on pour déclencher une fonction déclarer dans un popup à partir de la page mére? peut être que ça nous mettra la puce à l'oreille.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 10:37
dans un pop-up, ça c'est assez simple !
mais dans une extension IE, d'un manière plus générale :
    je ne sais pas comment faire communiquer l'extension
        et la page, sauf  ce que j'ai montré.
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 10:39
>> car elles sont tt simplement déclarées dans un fichier externe
    aucune incidence, ça, à priori


<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007
22 août 2007 à 10:46
je suis d'accord avec toi bultez.
Alors pourquoi IE ne déclenche pas l'evenement onmouseover attaché par notre extension? ça fait un moment que je me bat pour que ça marche    mais sans resultat :'( ! chui au bord de la déprime.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 11:06
je ne sais pas.        ;-((
tout ce que je sais, c'est qu'on doit faire une énorme bétise.        ;-))
en attendant, pour toi : innerHTML ou IE7Pro, ça doit le faire.
<hr />



Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
0
xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007
22 août 2007 à 14:40
Bon, je reviens pour vous dire que j'ai détourné le probléme en injectant un fichier js dans la page intiale.cela me permet de ne plus utiliser l'objet "external" et de travailler directement avec l'objet window.document et là tt marche nikel !! n'hésitez pas si vous avez besoin d'aide et je vous remercie pour votre attention !!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 août 2007 à 14:50
ah ben oui...   mais là, le problème est totalement différent.
il faut inclure le script dans toutes les pages où on veut cette fonctionnalité !
du coup, c'est un peu plus simple.
<hr />
            Cordialement          Bul       [mon Site]    [M'écrire]
<hr />

                                                                     En général, c'est absurde de généraliser.
0
xaminou Messages postés 10 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 22 août 2007
22 août 2007 à 15:02
Exacte.
L'inclusion du script se fait dynamiquement par un .createElement("script") et un .appendChild(theScript) . ça nous facilite la tache.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
23 août 2007 à 10:53
certes xaminou.

ce n'était pas une critique, et si cela correspond à ce que tu veux : nickel.
on est obligé d'inclure le javascript ( qu'elle que soit la manière ), 
donc uniquement sur vos sources.

 IE7Pro et/ou une "extension de IE" n'ont pas le même but :
c'est "ajouter du javascript au navigateur", qui va s'exécuter,
même sur des pages qui ne vous appartiennent pas, sans
toucher aux sources de ces pages.

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
0
Rejoignez-nous