Pencere popup Engelleyicisi devre dışı bırakın.JQuery olay açık.() preventDefault ayarlanır
Koşullu bir köprüyü tıklatın olay üzerine bir WordPress kullanmak bir iletişim göstermek istiyorum .
Ben bir gereği condition1 gibi bir WordPress kullanmak bir diyalog açmak ve eğer condition1 memnun değil ise, 'href' söz konusu olan etiket. tarafından başvurulan gibi sayfasına gidin
Link tıklatma olayı bir işlevi çağırmak mümkün duyuyorum. Bu işlev, şimdi başka bir URL (bu Bahar benim denetleyicisi yürütür ve cevap verir) yürüterek dedi durumu kontrol eder.
Tek pencere ile mükemmel çalışır.açık pop-up engelleyici tarafından engellenmiş.
$('a[href*=/viewpage?number]').live('click', function(e) {
e.preventDefault();
redirectionURL = this.href;
pageId= getUrlVars(redirectionURL)["number"];
$.getJSON("redirect/" pageId, {}, function(status) {
if (status == null) {
alert("Error in verifying the status.");
} else if(!status) {
$("#agreement").dialog("open");
} else {
window.open(redirectionURL);
}
});
});
Ben kod e.preventDefault(); kaldırırsanız, popoup engelleyici sayfa engellemez, ancak condition1 için daha sonra diyaloğun yanı sıra açar açar 'href' sayfa.
Ben bir çözemezse başka bir sorun oluşturur. Her iki durum için adalet aynı anda vermek mümkün değil benim.
Bana bu sorunu çözmek lütfen yardım eder misiniz?
Bu çözüldükten sonra diyalog değil olay:) yani çözülmesi gereken bir başka sorun, navigasyon var
CEVAP
Pop-up blokerler genellikle sadece kullanılan window.open izin verirsırasındabir kullanıcı işleme olayı (bir tıklama gibi). Senin durumunda, window.open diyorsundaha sonraolay sırasında değil, çünkü $.getJSON asenkron.
İki seçeneğiniz var:
BaÅŸka bir ÅŸey,
window.openyerine.Yukarı tarayıcı UI kilitler normalde veba gibi Kaçınılması gereken bir durumdur ajax çağrısı senkron olun.
$.getJSONeÅŸittir:$.ajax({ url: url, dataType: 'json', data: data, success: callback });...ve
$.getJSONçağrı senkron yukarıda senin parametreler eşleştirme ve ekleme yapabilirsinizasync: false:$.ajax({ url: "redirect/" pageId, async: false, dataType: "json", data: {}, success: function(status) { if (status == null) { alert("Error in verifying the status."); } else if(!status) { $("#agreement").dialog("open"); } else { window.open(redirectionURL); } } });Yine, eğer hedefe ulaşmak için başka bir yol var mı senkron ajax çağrıları katılmıyorum. Ama yapamazsın işte.
İşte zaman uyumsuz çağrı. çünkü test başarısız kod bir örnek
Live example | Live source(Canlı bağlantılar artık JSBin değişiklikler nedeniyle çalışma)jQuery(function($) { // This version doesn't work, because the window.open is // not during the event processing $("#theButton").click(function(e) { e.preventDefault(); $.getJSON("http://jsbin.com/uriyip", function() { window.open("http://jsbin.com/ubiqev"); }); }); });Ve burada, senkron çağrısı ile iş yapan bir örnek:
Live example | Live source(Canlı bağlantılar artık JSBin değişiklikler nedeniyle çalışma)jQuery(function($) { // This version does work, because the window.open is // during the event processing. But it uses a synchronous // ajax call, locking up the browser UI while the call is // in progress. $("#theButton").click(function(e) { e.preventDefault(); $.ajax({ url: "http://jsbin.com/uriyip", async: false, dataType: "json", success: function() { window.open("http://jsbin.com/ubiqev"); } }); }); });

jQuery bağlantısını devre dışı bırakın...
JQuery UI Datepicker Cumartesi ve paza...
Sütun Sıralama jquery DataTable kullan...
/Devre dışı bırakmak için en kolay yol...
jquery devre dışı bırakmak formu girin...