Rails turbolinks - window.load не document.load

У меня есть такой код в одном файле .js:

var ready;
ready = function() {
var galleries = $('.car-gallery').adGallery({
    loader_image: '../assets/loader.gif',
    slideshow: {
    enable: false,
    autostart: false,
    speed: 5000,
    start_label: 'Start',
    stop_label: 'Stop',
    // Should the slideshow stop if the user scrolls the thumb list?
    stop_on_scroll: true, 
    // Wrap around the countdown
    countdown_prefix: '(', 
    countdown_sufix: ')',
    onStart: function() {
      // Do something wild when the slideshow starts
    },
    onStop: function() {
      // Do something wild when the slideshow stops
    }
  }});
};
$(document).ready(ready);
$(document).on('page:load', ready);

но в моем приложении rails 4 я использую турболинки, и иногда бывает так, что изображения не загружаются, но документ готов, и я не могу запустить ('.car-gallery').adGallery

может есть способы не перезагружать страницу, а использовать window.load с турбоссылками? и как?


person brabertaser19    schedule 12.04.2014    source источник
comment
Пробовали ли вы добавить alert, чтобы проверить, сработает ли это?   -  person Richard Peck    schedule 12.04.2014
comment
@RichPeck срабатывает, когда я нажимаю ctrl+f5, когда иду по турболинкам - нет   -  person brabertaser19    schedule 12.04.2014
comment
Такое же поведение и для вашего плагина adGallery?   -  person Richard Peck    schedule 12.04.2014
comment
github.com/rails/turbolinks#jqueryturbolinks посмотрите это   -  person Nitin Jain    schedule 12.04.2014


Ответы (1)


Помимо JQueryTurbolinks, как показано в комментариях, ваш JQuery не привязывается к загрузке страницы. события как положено

Я бы рекомендовал этот код (если вы хотите сохранить собственное решение):

var galleries = function() {
  $('.car-gallery').adGallery({
    loader_image: '../assets/loader.gif',
    slideshow: {
    enable: false,
    autostart: false,
    speed: 5000,
    start_label: 'Start',
    stop_label: 'Stop',
    // Should the slideshow stop if the user scrolls the thumb list?
    stop_on_scroll: true, 
    // Wrap around the countdown
    countdown_prefix: '(', 
    countdown_sufix: ')',
    onStart: function() {
      // Do something wild when the slideshow starts
    },
    onStop: function() {
      // Do something wild when the slideshow stops
    }
  });
};
$(document).on('page:load ready', galleries);

Можете ли вы попробовать добавить это:

var alert = function(){
    alert("loaded");
};
$(document).on("page:load ready", alert);

Обновить

После разговора мы обнаружили, что это решение работает лучше всего:

#JS
$('.car-gallery').adGallery({
    loader_image: '../assets/loader.gif',
    slideshow: {
    enable: false,
    autostart: false,
    speed: 5000,
    start_label: 'Start',
    stop_label: 'Stop',
    // Should the slideshow stop if the user scrolls the thumb list?
    stop_on_scroll: true, 
    // Wrap around the countdown
    countdown_prefix: '(', 
    countdown_sufix: ')',
    onStart: function() {
      // Do something wild when the slideshow starts
    },
    onStop: function() {
      // Do something wild when the slideshow stops
    }
  });

#view
<%= link_to "link", path, data: { no-turbolink: true } %>
person Richard Peck    schedule 12.04.2014
comment
небольшая правка... onStop: function() { // Do something wild when the slideshow stops } }); }; - ) - неправильно... тоже все равно не выстрелил( - person brabertaser19; 12.04.2014
comment
Итак, функция .adGallery срабатывает сейчас или нет? - person Richard Peck; 12.04.2014
comment
Так функция .adGallery срабатывает сейчас или нет? - тоже до сих пор не стрелял - person brabertaser19; 12.04.2014
comment
Ничего себе, давайте попробуем что-нибудь еще - я обновлю с помощью простого оповещения - person Richard Peck; 12.04.2014
comment
Uncaught SyntaxError: неожиданный токен) - person brabertaser19; 12.04.2014
comment
Там сказано, какая линия? Весь мой код выглядит нормально для меня - person Richard Peck; 12.04.2014
comment
также если вы хотите сохранить нативное решение - это не так нужно, может быть, другое решение? - person brabertaser19; 12.04.2014
comment
Я имел в виду, что если вы не хотите устанавливать другой плагин gem/JS. То есть, если вы хотите просто использовать стандартные JS и JQuery с Turbolinks - person Richard Peck; 12.04.2014