Sitem, sayfanın büyük bir bölümünde gezinme yapmak için jquery.load()
kullanıyordu. Gerçekten yeteneğini takdir etmek sadece yüklenen içeriğin sadece belirli bir bölümünü, id = "içerik" ile burada div şunlardır:jquery.ajax() yüklü sayfalarda çalışan komut dosyaları document.ready dosyasını çok erken çalıştırıyor
$(frame_selector).load(url +" #content", function(response, status, xhr) {...});
Ama şimdi sayfaların parçası olan komut dosyalarını çalıştırmak gerekiyor dinamik olarak yüklenir. Jquery.load()
, bu komut dosyalarını çıkarır ancak jquery.ajax()
yapmaz. Bu yüzden gibi bir ajax çağrısında jquery.load
kısmi içerikli işlevselliği çoğaltılamaz:
$.ajax({
url: url,
dataType: 'html',
success: function(data, textStatus, XMLHttpRequest) {
// Only include the response within the #content id element.
$(frame_selector).html(jQuery("<div>")
.append(data)
.find("#content")
);
}
});
Sorun dinamik ajax çağrısından yüklenirken komut güvenilir çalışmıyor olmasıdır. Bazen herhangi bir etkisi yok gibi görünüyorlar, belki de çok erken çalışıyorlar. Komut dosyaları jquery'de sadece DOM manipülasyonunu yapıyor - resimlere veya flaşa veya henüz yüklenmesi gerekmeyen bir şeye güvenmiyor. Sıkışmaya devam etmek için, işleri halletmek için bu iğrenç hackim var. Bunun yerine sadece kullanarak AJAX yüklü senaryonun:
$(document).ready(function() {...}); // unreliable
Ben çalıştırmadan önce komut 200ms gecikme:
$(document).ready(window.setTimeout(function() {...}, 200)); // HATE THIS
Herkes ben bir gecikme sabit kodlama olmadan güvenilir bu işi yapmak nasıl biliyor musunuz? Ben <script>
ve #content
yüklemek için benim mantığı yeni bir div içine yüklemek için bir yarış durumu olduğunu tahmin ediyorum, ama bu konuda ne yapacağından emin değilim.
Verileri yakalamak için istekleri senkronize edebilirsiniz. – dz1984
Bu korkunç bir fikir. Senkronize istekleri yürütülürken, tarayıcınızın UI'si kilitlenir. –