9

我有一个加载页面并在点击时调用 javascript 函数的链接。问题是 javascript 函数在页面重定向之前无法完成。有什么办法可以保证吗?

您会注意到alert()javascript 函数中有一个注释掉了,如果我取消注释它,该函数就能够完成。但是,我显然不希望实际发生警报弹出窗口。

链接在这里 :

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

这是无法及时完成的​​javascript函数:

function setYSession() {
    var YposValue = window.pageYOffset;
    $.get('yPosSession.php?yValue=' + YposValue);
    //alert(YposValue);
    return false;
}
4

1 回答 1

13

尝试更改onclick以返回函数的结果:

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

或显式返回 false:

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

鉴于您的函数返回false,任何一种方式都将停止默认事件行为,即,它将完全停止链接导航。然后在您的函数中,您可以添加代码以在 Ajax 完成后进行导航:

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

    return false;    
}

理想情况下,特别是因为您似乎在使用 jQuery $.get(),我会删除内联 onclick 并执行以下操作:

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;
});
于 2012-05-23T02:04:41.703 回答