我有一个链接加载页面并在点击时调用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;
}
答案 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>