5

Я использую Turbolinks 2.5.3, и у меня есть тег скрипта в нижней части домашней страницы.Turbolinks загружает Javascript несколько раз

<script> 
    $(document).ready(function() { 
    alert('hello'); 
    }); 
</script> 

Для каждой страницы на сайте, я бегу следующий JS:

Turbolinks.pagesCached(0); 

Если я захожу на главную страницу, предупреждение появляется один раз. Если я нажму кнопку «Назад», а затем кнопку «Назад» в браузере, загрузится домашняя страница, и теперь появятся два предупреждения. Если я снова повторю этот процесс, появятся три предупреждения.

Вот мой вопрос:

Почему Turbolinks кэширование страницы, когда я явно сказали, что это не. Это связано с тем, что Turbolinks преобразует прослушиватель событий готового документа? Как исправить это, чтобы он загружался только один раз?

+0

Почему вы используете 'pagesCached (0) 'on каждую страницу? –

ответ

1

Попробуйте что-то вроде этого

<script> 
    $(document).ready(function() { 
    if (alert('hello')) { 
    } 
    else { 
    alert('hello'); 
    } 
    }); 
</script> 
+0

Это не выполнимое решение, так как 'alert ('hello')' фактически не используется в моем коде. Я добавил его для простоты. – jason328

1

Используйте это для на нагрузке вместо

$(document).on('ready page:load', function() { 

https://github.com/turbolinks/turbolinks-classic#events

+0

Извините, это все еще вызывает загрузку формы более одного раза. – jason328

+0

Что делать, если вы удалите часть 'ready'? –

+0

Nope, такой же результат. Предупреждение загружается дважды. – jason328

1

использование turbolinks:load

<script> 
    $(document).on('turbolinks:load',function() { 
    alert('hello'); 
    }); 
</script> 
+0

К сожалению, предупреждение не появляется вообще с этим кодом. – jason328

+0

Это точно для турбовинтовок 5, но не для 2.5.3 –