2011-12-14 9 views
5

aşağıdaki yöntemi: Bu yöntem MVC üzerinde bir ajax kısmi yük denirsetTimeout (f, 0) karşılığı? çapraz tarayıcı sorunlarını neden çözüyor?

Init: function (selector, settings) 
{ 
    setTimeout(function() 
    { 
     var s = 
     { 
      width: '100%', 
      script_url: '/Content/Scripts/tiny_mce/tiny_mce.js', 
      theme: "advanced", 
      plugins: "autolink,lists,pagebreak,style,layer,table,paste,directionality,noneditable,visualchars,xhtmlxtras,template", 
      theme_advanced_buttons1: "fontselect,fontsizeselect,|,bold,italic,underline,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist", 
      theme_advanced_buttons2: "", 
      theme_advanced_buttons3: "", 
      theme_advanced_buttons4: "", 
      theme_advanced_more_colors: false, 
      theme_advanced_toolbar_location: "top", 
      theme_advanced_toolbar_align: "left", 
      theme_advanced_statusbar_location: "none", 
      theme_advanced_resizing: false, 
      convert_urls: !!$(selector).data("richEditor-ConvertUrls") // by default we don't convert urls 
     }; 
     $.extend(s, settings); 
     $(selector).tinymce(s); 
    },0); 
} 

tüm tarayıcılarda çalışır, nedense , ben bu çağrı olmadan, editör kilitleniyor firefox için setTimeout(f,0) çağrı ihtiyaç firefox ve sayfa sonları (çoğu kez özel durumlara tıklamak istisnalar üzerine tıklanır). çağrı ile her şey mükemmel çalışır.

Bu setTimeout çağrısından nasıl kaçınabileceğimi merak ettim (diğer bazı çözümlerden) ve eğer bu bir seçenek değilse, nedenini bilmek isterim.

Korkarım ki bu durum için en temiz çözüm olmayabilir.

+1

ajax geri arama sayfanızı içerikle güncelliyor mu? DOM güncellendi önce bu ateş olabilir. Eğer durum buysa, jQuerys hazır olayını kullanarak DOM'ın '$ (selector) 'a tinymce uygulanmadan önce bitmesini bekleyebilirsiniz. – JesseBuesking

+0

, DOM'ı günceller, ancak bu aynı zamanda '$ (f() {}) içinde çalışır;' – bevacqua

+0

Init yönteminin dışında, zaman aşımının içinde 's' olduğunu bildirmek için bir neden var mı? buraya gönderme). Ayrıca bu sorunu jsfiddle'da yeniden oluşturabilmenin bir yolu var mı? Bu benim denemem ve yardım etmemi kolaylaştırır. – JesseBuesking

cevap

0

Bu, bir zamanlama sorunu olmak zorundadır. DOMContentLoaded'de başka bir şey olursa, belki de tinyMCE veya başka bir betik de bu etkinlikle ilgili şeyler yürütüyor mu? Veya bir document.write() yürüten bir komut dosyası yüklenir mi?

Muhtemelen bu işlev yükte yürütülürken sorun giderilir. Eğer sorun meydana geldiğinde ne olduğunu anlamanız gerekenden daha büyük bir durum varsa, Firebug'da bir profil oturumu yapabilirsiniz.

İlgili konular