2012-05-23 34 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> 
相關問題