2017-03-31 17 views
0

我寫的一段JavaScript(它居住在app/assets/javascripts/tenant_content.js中)不起作用,因此我將它燒製成以下內容以便測試它:Rails - document.ready不能在特定的JavaScript文件中工作

$(document).ready(function() { 
    console.log("Test"); 
}); 

當我刷新頁面時,沒有記錄到控制檯。

如果我從document.ready中刪除console.log,那麼它打印得很好。奇怪的是,如果我將它移動到其他JavaScript文件之一,它也可以。它似乎是在這個特定文件中的組合,並且在導致其不起作用的功能內。任何想法爲什麼?

注意:我沒有使用Turbolinks。

感謝

回答

0

有在從運行停止的JavaScript的其餘部分不同的JavaScript文件中的錯誤。它是具體到一個文件的原因是因爲它是在樹中的錯誤文件後傳來的唯一文件:

javascripts 
    counter.js 
    notices.js 
    stripe.js    << this is where the error occurred... 
    tenant_content.js  << ...so the JS in this file wasn't running 

我沒有意識到錯誤後什麼也不會運行。

0

這意味着document.ready被炒是綁定在此事件之前。所以你的DOM在腳本加載之前就準備好了。

如果此標籤位於頁面底部,請將其放好。或刪除asynchdeferred屬性。

+0

這實際上是一個阻止它被解僱的錯誤,我沒有意識到它會阻止JS運行的其他部分。謝謝你的回答! –

0

除非你刪除了它,否則你將默認運行Turbolinks。

而不是當你點擊鏈接時做整頁加載,它會做XHR請求並用javascript代替body

因此,您不會遇到任何document.ready事件。相反,你應該使用其中的一個,這取決於你所運行:

$(document).ready(myFunc); // What you're currently doing, but isn't working 
$(document).on('page:load', myFunc); // Classic Turbolinks (Rails 4) 
$(document).on('turbolinks:load', myFunc); // Turbolinks 5 (Rails 5) 
+0

我實際上已經完全移除了Turbolinks。我最終發現它,如果你對這個問題感到好奇,請檢查我的答案。感謝您的回答! –