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

use*_*694 9 javascript function onclick href

我有一个链接加载页面并在点击时调用javascript函数.问题是在页面重定向之前javascript函数无法完成.反正有没有确保它呢?

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

链接在这里 :

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

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

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

nnn*_*nnn 13

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

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

或明确返回false:

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

鉴于您的函数返回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;    
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,特别是因为您似乎使用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;
});
Run Code Online (Sandbox Code Playgroud)