lostyazilim
tr.link

Javascript Kalıntılarını Temizleyemiyorum

3 Mesajlar 665 Okunma
lstbozum
tr.link

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Merhaba arkadaşlar, konu aslında Javascript, Jquery, Ajax kategorilerini kapsıyor o yüzden genel bölüme açtım.

Örnek olsun diye aşağıdaki şekilde bir fonksiyon yazdım. Amaç ne demek istediğimi anlayın.


function ActiveFlowDatasFunction(){
$.ajax({
url: "LiveData.php",
type: "POST",
data: {POST:POST},
beforeSend: function(){
$("#LiveDiv").html("");
},
complete:function(data){

}
});
var timeout = setTimeout(function(){

ActiveFlowDatasFunction();

}, 5000, function(){
clearTimeout(timeout);
});
console.log(timeout);
}



Sorunum şu şekilde arkadaşlar; buna benzer bir yapıyla hazırladığım php dosyasını dinamik butonlar yardımıyla bir popup içerisindeki div e ekliyorum. Normalde sıkıntısız çalışırken verileri anlık güncellemek için zamanlayıcı (önce interval sonra settimeout) ekledim. Açılan popuplar dinamik olduğu için ilk açtığım popuptan sonra başka bir popup açtığımda bir önceki açtığım popup içerisindeki verilerde geliyor. Bende saatlerce uğraştan sonra console.log yardımıyla settimeout kalıntısına baktım. Ben popupu kapatıyorum içerisini bile temizliyorum .html("") ile ama hala settimeout devam ediyor. clearTimeout ile temizliyorum ama hala devam ediyor. Div içerisini temizlediğim halde div içerisine yüklediğim javascript kodları varmış gibi tüm kodları görüyorum.


Kısaca yapmak istediğim şey bu kalıntıları nasıl silebilirim?


Desteğiniz için şimdiden teşekkürler.
 

 

wmaraci
reklam

sametweb sametweb WM Aracı Kullanıcı
  • Üyelik 29.08.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek software developer
  • Konum ABD
  • Ad Soyad S** M**
  • Mesajlar 615
  • Beğeniler 52 / 196
  • Ticaret 1, (%100)
Scope problemi yaşamışsınız sanırım. Şu adresteki örneği takip ederseniz sorun çözülecektir.Dışarıda boş bir timeout değeri oluşturun, bir fonksiyon içinde bu timeout değerine setTimeout verin, başka bir fonksiyon içinde de temizlik işlemini yapın. Başlatmak için birinci fonksiyonu, temizlemek için ikinci fonksiyonu çağırın.
 

 

React Dersleri YouTube Kanalı
https://www.youtube.com/c/reactdersleri

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Teşekkürler cevabınız için, söylediğinize benzer bir şey yaparak çözmüştüm sorunumu. Başta açılan tüm timeoutların id değerini bir arraya ekledim sonra ekranı kapatırken temizlettim döngü yaptırarak
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al