2016-03-07 15 views
8

benim Bildiri dosyasının zaman uyumsuz yükleme sonrasında sayfa javascript yüklerim eşzamansız olarak yüklenir. Application.js manifest dosyası yüklenene kadar bunları nasıl erteleyebilirim.nasıl birlikte javascript yükleme Ben asenkron Uygulamamı dönüştürmek çalışıyorum

Sayfa j'leri $(window).load(function(){}); içine kaydırmayı denedim, ancak bu yardımcı olmadı.

Uncaught ReferenceError: $ is not defined 

Güncelleme: Hala şu hatayı görebilirsiniz

Bu benim için çalışıyor gibi görünüyor, ama eğer birini doğru bir yaklaşım olduğunu teyit etmek istiyorum:

<%= javascript_include_tag "application", async: true, onload: 'pageScripts()' %> 

Sonra gibi sayfa komut:

<script> 
    function pageScripts() { 
    // do something 
    } 
</script> 
+0

Neden javascriptinizi 'window.onload' kapsamına yazmıyorsunuz? – jayant

cevap

10

Sizin Yaklaşım doğrudur, ancak geliştirmeden sonra üretim için Async'inizi sınırlamanızı öneririm. Sprockets'lar henüz tüm dosyaları desteklemedi.

<%= javascript_include_tag "application", async: Rails.env.production?, onload: 'pageScripts()' %> 
+1

Teşekkürler, Yanıt verdiğinizden beri size çeki vereceğim. BTW, bunu geliştirme içinde test.rb 'config.assets.debug = false' içine koyarak bunu test edebilirsiniz. Bu açık modda manifest dosyasını zorlar, ancak genellikle async: Rails.env yapmak daha iyi bir fikir. üretim? Teşekkürler. – Abram

+0

arasındaki fark nedir: async => true ve async: Rails.env.production? ? –

+1

@KickButtowski fark şu ki, ": async => true" olduğunda her zaman Async olacaktır, ancak "async: Rails.env.production?" Olduğunda, yalnızca üretimde olduğu zaman – SsouLlesS

İlgili konular