Je voudrais expliquer ma situation.

J'écris un site Web et l'une des pages Web utilise la carte Google.

Le site Web est un site Web cms et utilise ektron

Donc, je dois utiliser ektron google map car il fournit certaines fonctionnalités que les clients souhaitent.

Ektron utilise simplement google map et utilise ajax pour combiner avec sa propre logique.

Je ne connais pas les détails mais chaque fois que j'ai essayé de changer les propriétés de ce ektron map, je dois cliquer sur search ou zoom in ou zoom out ou déplacer la carte.

Ce n'est qu'après cela que les changements de propriétés sont affectés. Sinon, ils ne le font pas.

Donc, je pense au raccourci et je clique par programmation sur le bouton search de ektron map.

Là encore, j'ajoute le contrôle par programme à un panel.

Je ne peux pas écrire document.ready parce que j'ai découvert que cela fonctionne avant le chargement de la carte.

J'ai donc écrit ce code pour faire fonctionner la carte.

<script type="text/javascript">
    $(window).load(function () {
        $("#__GetAddr").click();
    });
</script>

Ça marche. __GetAddr est l'ID du bouton de recherche et je clique dessus après que tout se charge.

Mais le problème a commencé lorsque je l'utilise avec Chrome.

J'ai découvert que $(window).load() ne fonctionne pas dans le chrome, le safari et l'opéra.

Je l'ai googlé pendant un moment mais je ne trouve pas de réponse solide.

Existe-t-il un moyen alternatif clair pour que cela fonctionne dans ces 3 navigateurs alors qu'il fonctionne toujours pour IE7,8,9 et Firefox.

Merci beaucoup.

Salut à tous, j'ai une solution.

Je pense que c'est la meilleure solution. mais ça marche.

<script type="text/javascript">
    if (navigator.appName == "Microsoft Internet Explorer") {
        $(window).load(function () { $("#__GetAddr").click(); });
    }
    else {
        window.addEventListener('load', function () { $("#__GetAddr").click();                  }, false);
    }
</script>

J'apprécierais d'en avoir un meilleur. : P

0
william 1 déc. 2011 à 04:54

5 réponses

Meilleure réponse
<script type="text/javascript">
            if (navigator.appName == "Microsoft Internet Explorer") {
                $(window).load(function () { $("#__GetAddr").click(); });
            }
            else {
                window.addEventListener('load', function () { $("#__GetAddr").click();                  }, false);
            }
</script>
1
william 27 févr. 2012 à 02:29

Vous pouvez essayer ce que Google recommande dans sa documentation API Maps - mettre un événement onload dans la balise body. Cela devrait fonctionner pour chaque navigateur:

<body onload="ready()">

Ensuite, déclarez la fonction ready () ci-dessous dans une balise de script:

<script type="text/javascript">
function ready() {
  $("#__GetAddr").click();
}
</script>
-1
Adam Bailin 1 déc. 2011 à 01:09

Ce n'est pas bien, mais vous pouvez utiliser un délai d'attente si vous détectez que le navigateur n'est pas Chrome. Cependant, j'essaierais vraiment d'obtenir une notification de la carte elle-même, une fois qu'elle est chargée.

0
lucas clemente 1 déc. 2011 à 01:04

Vous utilisez jQuery version 3.1.0 et l'événement de chargement est obsolète depuis jQuery version 1.8. L'événement de chargement est supprimé de jQuery 3.0. Au lieu de cela, vous pouvez utiliser la méthode on et lier l'événement de chargement JavaScript:

$(window).on('load', function () {
      $("#__GetAddr").click();
 });
0
prashanth padala 20 sept. 2017 à 07:16

Avez-vous même essayé un document prêt pour cela?

$(document).ready(function() {
    $("#__GetAddr").click();
});
0
Tolga Arican 1 déc. 2011 à 00:57