链接在javascript onclick函数能够完成之前重定向页面

Link redirects page before javascript onclick function is able to finish

本文关键字:重定向 javascript onclick 函数 链接      更新时间:2023-09-26

我有一个链接,可以加载页面并在单击时调用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;
}

尝试更改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(),我会删除内联点击并执行以下操作:

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