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 :

lancer fonction JS automatiquement


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Par défaut lancer fonction JS automatiquement
    Bonjour !

    Je cherche à lancer une fonction js sans onClick ou autre, à l'ouverture d'une page.
    J'ai déjà essayé de faire onLoad='maFonction()' dans le body, sans résultat.

    J'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript"> 
    	openbox("", 1)
    </script>
    Or avec un onClick ca marche ! Cela ne vient donc pas de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a id ='clic' name='clic' class="laclass" onclick='openbox("", 1)'>cliquer ici</a>
    Il s'agit en fait d'une page avec un googleMaps, qui au click sur un point ouvre une lightbox, pour cela je fourni un id en $_REQUEST.

    Voici le code du marqueur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function createMarker(point, title, id, n) {
    	if(n >= 0) { n = -1; }
    	var marker = new GMarker(point);
    	GEvent.addListener(marker, "click", function() {
    	document.location.href="vignerons2.php?ID="+id ;		
    	}); 
     
    	return marker;
    }
    Peut-être est-ce à cause du return?
    Il n’empêche que de toutes façons j'arrive bel est bien sur ma page avec mon googleMaps et mon &_request bien présent, j'ouvre ma box seulement si cette variable est présente, et le onclick marche.

    J'ai trouvé un problème similaire ici:
    http://forum.webrankinfo.com/lancer-...nt-t83692.html

    Mais ça ne m'a pas aidé.

    J'ai découvert l'existence de la fonction doCLick(), qui est sensée simuler un click de l'utilisateur, mais impossible de trouver comment elle fonctionne... je ne sais pas si cela peut être la solution du problème

  2. #2
    Membre très actif Avatar de sylvain230
    Homme Profil pro
    Orléans
    Inscrit en
    Mai 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Orléans
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 234
    Par défaut
    et si tu utilise une fonction du genre setInterval ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Par défaut
    Hum, si je comprend bien son utilité, je peux lancer des script toutes les x secondes? Cela ne va pas ouvrir plusieurs fois ma lightbox?
    Le problème étant le même, je ne sais pas commenter lancer ma fonction, même en utilisant setInterval.

    Qui plus est, j'ai lu que cette fonction posait des problèmes avec certains navigateurs (IE powa), or je travaille pour une boîte dont certains clients sont encore sous IE7 je préfère éviter.

    Edit: je vais tester tout de même, histoire de voir si la fonction se lance si on l'appelle dans une autre fonction :O

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Par défaut
    Cela fonctionne, ma box s'ouvre toute seule grâce à ça!

    Y-a-t-il une autre solution que de mettre un timer enorme pour que la box reste affichée en continu?

  5. #5
    Membre très actif Avatar de sylvain230
    Homme Profil pro
    Orléans
    Inscrit en
    Mai 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Orléans
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 234
    Par défaut
    peut être un booléan. Au début tu le met a false et quand ta box est ouverte tu le met à true. Comme ca ta box ne sera ouverte qu'une fois.

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Si c'est le fait que la fonction se lance à intervalle régulier, pourquoi ne pas prendre setTimeout ? Ou bien vider le timer (clearTimer(timer)) ?

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par oni13
    Qui plus est, j'ai lu que cette fonction posait des problèmes avec certains navigateurs (IE powa)
    Ah...
    Quels problèmes ?

    Sinon, pour ton problème, il est probable que ça soit dû à l'appel du script avant que les éléments sur lesquels il travaille n'existent dans la page.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    onload est infaillible, c'est l'événement de base en javascript;

    quel dommage qu'on ne voie pas ta fonction openbox()...

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pas tout à fait JT.
    Apparemment, il s'agit d'une carte Google, qui est donc chargée via un script, du coup tu peux avoir le onload de la page sans que la carte ai fini de se charger, d'où le problème rencontré
    Mais il existe un événement déclenché par Google au chargement de la carte.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Par défaut
    Bovino, je n'en sais rien, mais:
    setInterval() pose des problèmes de compatibilité avec certains navigateurs de version 4. Il est plus sûr d'utiliser setTimeout().
    Effectivement ils proposent d'utiliser setTimeout mais j'espérais qu'il y aurait une solution plus... "normale".

    Vermine
    J'ai essayé d'utiliser clearTimer(timer) mais cela ferme ma box

    Sylvain
    je ne comprend pas, que faire de ce booléen?

    je ne pensais pas que le code vous interesserait, mais voici donc le code pour la lightbox

    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
    function gradient(id, level)
    {
    	var box = document.getElementById(id);
    	box.style.opacity = level;
    	box.style.MozOpacity = level;
    	box.style.KhtmlOpacity = level;
    	box.style.filter = "alpha(opacity=" + level * 100 + ")";
    	box.style.display="block";
    	return;
    }
    
    function fadein(id) 
    {
    	var level = 0;
    	while(level <= 1)
    	{
    		setTimeout( "gradient('" + id + "'," + level + ")", (level* 1000) + 10);
    		level += 0.01;
    	}
    }
    
    // Ouverture lightbox
    
    function openbox(formtitle, fadin)
    {
    
      var box = document.getElementById('box'); 
      document.getElementById('shadowing').style.display='block';
    
      if(fadin)
      {
    	 gradient("box", 0);
    	 fadein("box");
      }
      else
      { 	
        box.style.display='block';
      }  	
      
    }
    // Fermeture lightbox
    
    function closebox()
    {
       document.getElementById('box').style.display='none';
       document.getElementById('shadowing').style.display='none';
    }
    Et le CSS
    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
    #shadowing
    {
    	display: none;
    	position: absolute;
    	top: 0;
    	left: 0;
    	width: 1600;
    	height: 1200;
    	background-color: #CCA;
    	z-index:10;
    	opacity:0.5;
    	filter: alpha(opacity=50);
    }
     
     
    #box 
    {
    	display: none;
    	position: absolute;
    	top: 15%;
    	left: device-width/2;
    	width: 550;
    	height: 600;
    	margin:0;
    	border: 1px solid black;
    	background-color: white;
    	z-index:101;
    	overflow: auto;
    }
    Edit:
    Je trouve tout de même étrange que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript"> 
    	var timer=setInterval("openbox(' ', 1)", 1000);
    </script>
    Fonctionne, et pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript"> 
    	openbox(' ', 1), 1000);
    </script>

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

Discussions similaires

  1. Comment lancer un clip automatiquement
    Par Tony. dans le forum Flash
    Réponses: 5
    Dernier message: 13/10/2006, 16h57
  2. [PHP] Lancer un script automatiquement
    Par skynicko dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2006, 14h58
  3. [Apache] Lancer des scripts automatiquement
    Par Jim_Nastiq dans le forum Apache
    Réponses: 2
    Dernier message: 16/05/2006, 13h35
  4. [PowerBuilder] [Débutant] Lancer fonction
    Par bejnat dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 04/10/2005, 14h21
  5. lancer fonction sans trigger
    Par $grm$ dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/04/2005, 10h58

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