Page de redirection des liens avant que la fonction JavaScript onclick ne soit en mesure de finir

j'ai un lien qui charge une page et appelle une fonction javascript sur Cliquez. Le problème est que la fonction javascript ne peut pas finir avant la redirection de la page. Est-il de toute façon à s'assurer qu'elle n' ?

vous remarquerez qu'il y a un alert() qui est commenté dans la fonction javascript, et si je le décompose, la fonction est en mesure de compléter. Cependant, je ne veux évidemment pas une alerte popup ait réellement lieu.

Voici le lien :

<a href="p.php?p=$randString&s=$postCat" onclick="setYSession();">

Voici la fonction javascript qui ne peut pas finir à temps:

function setYSession() {
    var YposValue = window.pageYOffset;
    $.get('yPosSession.php?yValue=' + YposValue);
    //alert(YposValue);
    return false;
}
8
demandé sur Tristan Cottam Meulemans 2012-05-23 05:58:18

2 réponses

essayez de changer le onclick pour retourner le résultat de votre fonction:

echo "<a href='p.php?p=$randString&s=$postCat' onclick='return setYSession();'>";

Ou explicitement return false:

echo "<a href='p.php?p=$randString&s=$postCat' onclick='setYSession();return false'>";

étant donné que votre fonction retourne false , l'une ou l'autre manière arrêtera le comportement par défaut de l'événement, c'est-à-dire qu'elle arrêtera la navigation du lien. Puis dans votre fonction vous pouvez ajouter du code pour faire la navigation après votre Ajax termine:

function setYSession() {    
    var YposValue = window.pageYOffset;
    $.get('yPosSession.php?yValue=' + YposValue, function() {
       window.location.href = 'p.php?p=$randString&s=$postCat';
    });

    return false;    
}

idéalement, surtout depuis vous semblez utiliser jQuery pour le $.get() , Je retirerais le clic en ligne et faire quelque chose comme ceci:

echo "<a href='p.php?p=$randString&s=$postCat' id='myLink'>";

$("#myLink").click(function() {
    var YposValue = window.pageYOffset,
        myHref = this.href;
    $.get('yPosSession.php?yValue=' + YposValue, function() {
       window.location.href = myHref;
    });

    return false;
});
13
répondu nnnnnn 2012-05-23 02:04:41
<script>
function a()
{
    setYSession();
    window.location.href = "p.php?p=$randString&s=$postCat";

    return false;
}
</script>

...

<a href='javascript: void(0);' onclick='a();'>click me</a>
-1
répondu Mario 2014-09-25 14:52:28