Exécuter du code JS (jQuery) avec et sans Turbolinks

Hello,

Je souhaite exécuter du code (basé sur jQuery) au chargement de la page. Cela doit marcher avec et sans Turbolinks.

Pour Turbolinks, le code est le suivant :

document.addEventListener("turbolinks:load", function() {
  // ...
})

Que dois-je modifier pour que mon code marche aussi sans Turbolinks ?

Merci

Si tu es déjà en jQuery autant faire

$(document).on("ready turbolinks:load", function () { [...] })

non ?

2 « J'aime »

La réponse de @nekogami est ok.
Une autre façon que j’aime bien car un peu plus découplée c’est:

var initMyPlugins = function() {
 // Ton code qui devra être exécuté avec ou sans Turbolinks, comme:
  $(".js-datepicker").datepicker();
}

$(document).on("turbolinks:load", initMyPlugins);
$(document).on("ready", initMyPlugins);

Pourquoi ? Si le nom d’évènement de Turbolinks change c’est plus facile à repérer dans ton code et à changer à l’avenir.
Aussi, j’aime bien avoir le listenner découplé du code à exécuter.

Je crois que Turbolinks trigger turbolinks:load au premier rendering aussi, il faut vérifier. Fais un console.log("loaded") dans initMyPlugins() dans mon exemple pour être sur que ça s’exécute pas deux fois au premier load.

1 « J'aime »
Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s