4

Есть ли способ заставить событие document.ready пропустить через javascript? Новый Rails 4 по умолчанию с использованием turbo links по умолчанию убивает это событие от обжига при переключении страниц. Это вызывает проблемы с более «традиционным» кодом jQuery, который завернут в $(function(){});.Ручной вызов document.ready

Я осмотрел и не вижу никакого способа сделать это событие огнем через код, и большинство ответов здесь предлагают другие работы вокруг.

Так что даже можно сделать document.ready fire через обычный код javascript?

ответ

3

Вы используете jQuery? Если да, попробуйте явный вызов функции JQuery $.ready(); в конце вашего кода. Это заставит все jQuery «готовые» функции, которые будут называться, как ваши собственные, так и те, которые вы используете в любых плагинах, которые вы используете.

Если это не поможет, вы можете попробовать $(window).load();.

Если ни один из них не работает, и вы используете какой-либо асинхронный вызов, вероятно, у вас, вероятно, есть еще одна проблема, чтобы сначала выбить. Удачи!

1

Я думаю, что самый простой способ сделать это без больших изменений в вашем коде - это прослушивать настраиваемое событие, а не готовое и внутри готового события запускать настраиваемое событие.

1

От turbolinks documentation: Вы должны сделать документ слушать один из turbolinks пользовательских страниц событий, например:

$(document).on('page:change', function() { 
    // Your code 
}); 
1

Самое простое решение:

Вставьте ваш Gemfile это:

gem 'jquery-turbolinks', '~> 1.0.0' 

Вставьте свою заявку.js:

//= require jquery.turbolinks 

(Не забудьте bundle update)

Если у вас есть в вашем коде coffescript следующее будет срабатывать для полной перезагрузки страницы или для открытия страницы с помощью ссылки, когда turbolinks активен:

$ -> 
    alert 'Hello World' 

($ -> средства document.ready)

Смежные вопросы