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 :

Pb d'appel de fonction js


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut Pb d'appel de fonction js
    Bonjour à tous,

    J'aimerais tout simplement appelé cette fonction qui se trouve dans ma page index.html qui n'est jamais rechargée, a partir d'une autre page qui a été chargée dans une div mais sans passé par un un evenement d'un objet html.

    function executer(fichier,div)
    {
    if(window.XMLHttpRequest) // FIREFOX
    xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // IE
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

    xhr_object.open("GET", fichier, false);
    xhr_object.send(null);

    if(xhr_object.readyState == 4)
    document.getElementById(div).innerHTML = xhr_object.responseText;
    }

    J'ai donc essayé d'ecrire a la fin d'un fichier qui sera chargé dans une de mes div :

    <script type="text/javascript">executer('consult_four_detail.php?item='+'<?php echo $value;?>' ,'Detail');</script>

    Mais ca ne fonctionne pas pourtant la page consult_four_detail.php fonctionne tres bien lorsqu'elle est appelé dans un evenement onchange d'un objet html.

    Je n'ai pas non plus d'erreur javascript ni dans ie ni dans firefox,c'est comme si il ignorait la ligne.En revanche lorsque cette ligne est placé dans la page index.html ou se trouve dailleur le corp de ma fonction, ca fonctionne.Je ne comprend pas pourquoi.

    En esperant avoir été à peu près clair je vous remerci d'avance pour vos suggestions

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Une fonction (ou autre élément) javascript est connu dans le contexte de la page ou il est déclaré. Si ta fonction execute() est déclarée dans page1.htm et appelée dans page2.htm, ça ne va pas marcher. Pour y arriver, il faut récupérer dans page2 un pointeur vers page1

    Ex. : window.parent, window.top, window.opener... selon les cas

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut
    Citation Envoyé par Herode
    Une fonction (ou autre élément) javascript est connu dans le contexte de la page ou il est déclaré. Si ta fonction execute() est déclarée dans page1.htm et appelée dans page2.htm, ça ne va pas marcher. Pour y arriver, il faut récupérer dans page2 un pointeur vers page1

    Ex. : window.parent, window.top, window.opener... selon les cas

    Excuse mais je débute en js, il faut faire une declaration en debut de page ou juste lors de l'appel de ma fonction, la prefixé des méthodes que tu vien de spécifier ou quelque chose du genre ??
    Sachant que je n'utilise pas de frames mais seulement des tableaux contenant des div dans les lesquelles j'inclu ensuite d'autres page.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut
    Je n'ai toujours pas résolu mon problème, si quelqu'un avait une solution se serait merveilleu.
    Je reexplique mon problème : je voudrai pouvoir appelé une fonction javascript qui se trouve dans une page à partir d'une autre qui est inclu dans la premiere

    merci pour vos réponse

  5. #5
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Bonjour, désolé pour le retard à la réponse... Une approche possible pour ton problème :

    Le principe est le suivant :
    • chaque page possède son propre contexte
    • pour faire communiquer deux pages entre elles, on passe par les pointeurs nommés plus haut
    • pour utiliser un élément connu d'une page, il faut l'enregistrer dans son contexte, c'est à dire a priori le déclarer comme une variable.

    Il faut savoir aussi qu'en javascript,
    1. une variable peut désigner n'importe quoi : un scalaire, un tableau, un objet, une fonction, rien du tout. Dans le cas qui nous intéresse, nous pouvons enregistrer une fonction dans le contexte de page, en faisant pointer une variable dessus.
    2. être enregistré dans le contexte revient en fin de compte à être connu comme variable membre de (ou attribut de) l'objet window concerné.

    Donc, voici un bout de code permettant les actions suivantes : la fenêtre A crée la fenêtre B quand on clique sur le lien "creer fille". La fenêtre B appelle une fonction qui a été enregistrée dans la fenêtre A quand on clique sur le lien "appel distant"

    * Fenêtre A (mère) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.m_dtd">
    <html>
    <head>
      <script language="javascript" src="js.js"></script>
    </head>
    <body onload="window.appelDistant = _appelDistant">
      <a href="#" onclick="creerFille();">Créer fille</a><p>
    </body>
    </html>
    * Fenêtre B (fille) :
    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
      <script language="javascript">
        function appelMere() { opener.appelDistant(); }
      </script>
      </head>
      <body>
      <a href="#" onclick="appelMere();">appel distant</a><p>
      </body>
    </html>
    * Fichier js.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function creerFille() { window.open( "fille.htm" ); }
    function _appelDistant() { alert( "appelDistant" ); }

  6. #6
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Le problème vient d'ajax et n'est pas nouveaux... le code javascript n'est pas interprété lors de l'affichage de la page appelée... il faut donc le gérer à partir de la page appelante... ou alors il faut que la page appelée ne retourne que du code javascript et que tu passe la reponse dans eval... .. .

    @ tchaOo°

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

Discussions similaires

  1. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  2. Réponses: 4
    Dernier message: 19/04/2004, 13h41
  3. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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