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 :

deux scripts incompatibles


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut deux scripts incompatibles
    Bonjour,

    pour pouvoir afficher sur ma page le curseur directement à l'endroit où le visiteur doit taper du texte j'utilise ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="Focaliser('q');">
    Parallelement, pour l'affichage des infos bulles j'utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript">window.onload=function(){enableTooltips()};</script>
    Le problème est que, quand ils sont présent tout les deux sur la même page, il y en à toujour un qui marche plus.

    Comment je pourais résoudre ce problème ?
    Merci de votre aide.

  2. #2
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript">window.onload=function(){enableTooltips();
                                                                                         Focaliser('q');};</script>

    ou dans le body onload ...

    et si cela ne focntionne toujours pas c'est qu'il y a des variables globales qui portent le même nom dasn les deux scripts ...
    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 !

  3. #3
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut
    Citation Envoyé par SpaceFrog
    [CODE]

    ou dans le body onload ...
    J'ai pas bien compris ce que tu veux dire.

    Citation Envoyé par SpaceFrog
    [CODE]
    si cela ne focntionne toujours pas c'est qu'il y a des variables globales qui portent le même nom dasn les deux scripts ...
    Voici les deux scriptes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script language="javascript" type="text/javascript">
    function Focaliser(element){
    if(navigator.appName=="Microsoft Internet Explorer"){document.all(element).focus();
    }else if(navigator.appName=="Netscape"){document.getElementsByName(element)[0].focus();}}
    </script>
    et
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    function enableTooltips(id){
    var links,i,h;
    if(!document.getElementById || !document.getElementsByTagName) return;
    AddCss();
    h=document.createElement("span");
    h.id="btc";
    h.setAttribute("id","btc");
    h.style.position="absolute";
    document.getElementsByTagName("body")[0].appendChild(h);
    if(id==null) links=document.getElementsByTagName("a");
    else links=document.getElementById(id).getElementsByTagName("a");
    for(i=0;i<links.length;i++){
        Prepare(links[i]);
        }
    }
     
    function Prepare(el){
    var tooltip,t,b,s,l;
    t=el.getAttribute("title");
    if(t==null || t.length==0) t="link:";
    el.removeAttribute("title");
    tooltip=CreateEl("span","tooltip");
    s=CreateEl("span","top");
    s.appendChild(document.createTextNode(t));
    tooltip.appendChild(s);
    b=CreateEl("b","bottom");
    l=el.getAttribute("href");
    if(l.length>30) l=l.substr(0,27)+"...";
    b.appendChild(document.createTextNode(l));
    tooltip.appendChild(b);
    setOpacity(tooltip);
    el.tooltip=tooltip;
    el.onmouseover=showTooltip;
    el.onmouseout=hideTooltip;
    el.onmousemove=Locate;
    }
     
    function showTooltip(e){
    document.getElementById("btc").appendChild(this.tooltip);
    Locate(e);
    }
     
    function hideTooltip(e){
    var d=document.getElementById("btc");
    if(d.childNodes.length>0) d.removeChild(d.firstChild);
    }
     
    function setOpacity(el){
    el.style.filter="alpha(opacity:95)";
    el.style.KHTMLOpacity="0.95";
    el.style.MozOpacity="0.95";
    el.style.opacity="0.95";
    }
     
    function CreateEl(t,c){
    var x=document.createElement(t);
    x.className=c;
    x.style.display="block";
    return(x);
    }
     
    function AddCss(){
    var l=CreateEl("link");
    l.setAttribute("type","text/css");
    l.setAttribute("rel","stylesheet");
    l.setAttribute("href","themes/default/infobulle/bt.css");
    l.setAttribute("media","screen");
    document.getElementsByTagName("head")[0].appendChild(l);
    }
     
    function Locate(e){
    var posx=0,posy=0;
    if(e==null) e=window.event;
    if(e.pageX || e.pageY){
        posx=e.pageX; posy=e.pageY;
        }
    else if(e.clientX || e.clientY){
        if(document.documentElement.scrollTop){
            posx=e.clientX+document.documentElement.scrollLeft;
            posy=e.clientY+document.documentElement.scrollTop;
            }
        else{
            posx=e.clientX+document.body.scrollLeft;
            posy=e.clientY+document.body.scrollTop;
            }
        }
    document.getElementById("btc").style.top=(posy+10)+"px";
    document.getElementById("btc").style.left=(posx-20)+"px";
    }

    Merci de votre aide

  4. #4
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    à priori il ne semble pas d'avoir d'incompatibilité intrinsèque entre les deux fonctions ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="fonction1();fonction2();" >
    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 !

  5. #5
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript">window.onload=function(){enableTooltips("container")};Focaliser('q');</script>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="function(){enableTooltips("container")};Focaliser('q');">
    Mais sa marche pas.

  6. #6
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    et individuellement elle marchent ?
    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 !

  7. #7
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut
    Oui, individuellement, elle marche bien.
    C'est des qu'il ya les deux onload

  8. #8
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Bonjour

    Pour contrer ce problème il faut ajouter des "listener"

    Plutot que de faire window.onload=function() ...

    tu peux faire :
    (window.attachEvent)?
    window.attachEvent("onload", fonctionOnLoad) :
    window.addEventListener("load", fonctionOnLoad, false);

    // attachEvent pour IE, addEvenetListener pour les autres

    function fonctionOnLoad(){
    }


    L'avantage, c'est que tu en mets autant que necessaire.

    C'est une méthode que j'ai déjà donné, qui a été critiquée et débattue (que je n'ai pas inventé, soyons clair) avec des arguments que je n'ai pas forcément bien compris, mais qui me donne entièrement satisfaction.

    Dans ton cas, le window.onload est écrasé par <body onload
    (ou l'inverse)

    Cordialement


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    heu alors pourquoi en mettant les deux fonctions dans le onload du body ou du window ça ne marche pas non plus ...
    Je ne crois pas que le problème se situe là ...
    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
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Je cite :
    Oui, individuellement, elle marche bien.
    C'est des qu'il ya les deux onload
    et :
    <script type="text/javascript">window.onload=function(){enableTooltips("container")};Focaliser('q');</script>
    Il manque une }

    et :
    <body onload="function(){enableTooltips("container")};Focaliser('q');">
    ya un problème de "

    Faire :
    <body onload="function(){enableTooltips('container')};Focaliser('q');">
    En corrigeant ces erreurs, ca devrait marcher aussi.
    Mais bon, pour conserver des scripts externes, réutilisables sans avoir à modifier les fonctions d'initialisation, et donc conserver une bonne modularité du code, je préfère nettement la méthode des listener.

    Je ne crois pas que le problème se situe là ...
    Moi, j'en suis persuadé


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  11. #11
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    En corrigeant ces erreurs, ca devrait marcher aussi.
    c'est donc que le problème ne venait pas de la ?
    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 !

  12. #12
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut
    Merci pour votre aide.

    Alor,
    quand j'essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload="function(){enableTooltips('container')};Focaliser('q');">
    Il y a que Focaliser('q') qui marche.

    J'ai aussi essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <script type="text/javascript">window.attachEvent("onload", Focaliser('q'););
    window.addEventListener("load", function(){enableTooltips("container")}, false);</script>
    Mais la rien ne marche.

  13. #13
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut

    <body onload="function(){enableTooltips('container');Focaliser('q');}">
    (D'ailleurs, tu peux te contenter de :
    onload="enableTooltips('container'); Focaliser('q');"

    <script type="text/javascript">window.attachEvent("onload", Focaliser('q');
    window.addEventListener("load", function(){enableTooltips("container")}, false);</script>
    ça, ce n'est pas la bonne syntaxe
    attachEvent, c'est pour IE
    addEventListener, c'est pour les navigateurs Internet

    la bonne syntaxe serait :
    (window.attachEvent)?window.attachEvent("onload", function(){Focaliser('q')} : window.addEventListener("load", function(){Focaliser('q')}, false);


    (window.attachEvent)?window.attachEvent("onload", function(){enableTooltips("container")} : window.addEventListener("load", function(){enableTooltips("container")}, false);

    C'est un peu plus lourd, je te l'accorde, mais on ne l'écrit qu'une fois dans le fichier js.

    (Pour mémoire, la syntaxe
    b?a:c
    signifie "si b alors a sinon c"
    )


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  14. #14
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut
    Merci bien.
    Sa marche

    Enfaite, il ne fallait pas mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onload="function(){enableTooltips('container');Focaliser('q');}">
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onload="enableTooltips('container'); Focaliser('q');"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Deux scripts innovants en conflit
    Par speedev dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/05/2006, 12h33
  2. Réponses: 6
    Dernier message: 06/03/2006, 12h53
  3. Envoyer des infos vers deux scripts
    Par Samrock dans le forum Langage
    Réponses: 6
    Dernier message: 31/01/2006, 19h05
  4. Problème de compatibilité entre deux scripts
    Par frutix dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2006, 14h24
  5. Réponses: 1
    Dernier message: 26/07/2005, 08h33

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