链接重定向页面之前的JavaScript的onclick功能是能够完成(Link redirects

2019-06-24 16:49发布

我有一个载入页面,并呼吁点击一个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;
}

Answer 1:

尝试改变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;
});


Answer 2:

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


文章来源: Link redirects page before javascript onclick function is able to finish