在javascript onclick功能完成之前链接重定向页面

时间:2012-05-23 01:58:19

标签: javascript function onclick href

我有一个链接加载页面并在点击时调用javascript函数。问题是在页面重定向之前javascript函数无法完成。无论如何都要确保它吗?

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

这是链接:

<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;
}

2 个答案:

答案 0 :(得分: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;    
}

理想情况下,特别是因为你似乎在为$.get()使用jQuery,我会删除内联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;
});

答案 1 :(得分:-1)

<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>