2012-05-23 32 views
8

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

您会注意到有一个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; 
} 
+0

什么特别的原因,为什么你想避免使用'.open' ..? –

+0

我试着在我的android设备上使用它,当我点击它时,它给我的问题...基本上它是由于某种原因返回2页而不是1。 – user1399694

+0

嗯好的,你知道这个:http://stackoverflow.com/questions/1865837/whats-the-difference-between-window-location-and-window-location-replace? –

回答

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

理想的情况下,特别是因为你似乎是使用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; 
}); 
+0

与您的第二次到最后推荐,并且它的作品就像一个魅力! – user1399694

+0

执行此类行为后,您可能会遇到与我所做的相同的问题:您的控件+点击不起作用。你打破了标准的浏览器行为,你会后悔的。 – Spork

-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> 
相关问题