2012-05-23 22 views
8

Bir sayfa yükleyen ve tıklatıldığında javascript işlevini çağıran bir link var. Sorun, sayfa yönlendirilmeden önce javascript işlevinin tamamlanamamasıdır. Bunu sağlamak için zaten var mı?Link, javascript onclick işlevi bitmeden sayfayı yönlendiriyor

Bir javascript işlevinde yorumlanmış olan bir alert() olduğunu fark edersiniz ve eğer bunu uncomment yaparsam, işlev tamamlayabilir. Ancak, kesinlikle gerçekleşmesi için bir uyarı açılır penceresi istemiyorum. İşte

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

zamanında bitirmek olamaz JavaScript fonksiyonudur: Burada

link

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

herhangi özel bir nedeni ..? –

+0

Android cihazımda kullanmayı denedim ve geri tıkladığımda bana sorun veriyordu ... temelde bir sebepten 1 yerine 2 sayfa çıkıyordu. – user1399694

+0

hm tamam, bunun farkında mısınız: http://stackoverflow.com/questions/1865837/whats-the-difference-between-window-location-and-window-location-replace? –

cevap

13

senin fonksiyonun sonucunu döndürmek için onclick değiştirmeyi deneyin:

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

Ya açıkça return false:

İşlevinizin false döndürdüğü düşünüldüğünde, her iki durumda da varsayılan olay davranışı durur, yani bağlantıyı hiç durmadan durduracaktır. Ajax bittikten sonra Sonra işlev içinde Navigasyondan yapmak kod ekleyebilirsiniz:

function setYSession() {  
    var YposValue = window.pageYOffset; 
    $.get('yPosSession.php?yValue=' + YposValue, function() { 
     window.location.href = 'p.php?p=$randString&s=$postCat'; 
    }); 

    return false;  
} 

İdeal $.get() için jQuery kullanıyor görünüyor, özellikle de, Onclick inline kaldırıp böyle bir şey yapmak istiyorum : Eğer .open` `kullanmaktan kaçınmak istiyorum neden

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

2'nci son tavsiyem ile gitti ve bir çekicilik gibi çalışır! – user1399694

+0

Böyle davranışlar uyguladıktan sonra, yaptığım aynı sorunla sıkışmış olabilirsiniz: kontrolünüz + tıklama çalışmayacaktır. Standart tarayıcı davranışını kırıyorsunuz ve bundan sonra pişman olacaksınız. – 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> 
İlgili konular