Turbolinks load ne fonctionne pas

Fermé
franksh Messages postés 40 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 1 novembre 2023 - 27 mars 2021 à 11:42
 PowerWave - 1 avril 2021 à 09:24
Bonjour à tous,
je voudrais que ce fichier soit chargé dans chaque page (comme sans turbolinks)

voici ce que j'ai fait en suivant la documentation des turbolinks qui malheureusement ne fonctionne pas avec moi

fonction ads(){
 var ad = ad || [];
(fonction (){
    
    } ();

  }

ads();

document.addEventListener("turbolinks: load", ads);


Merci d'avance

1 réponse

Salut,
quel fichier? Il n'y pas de fichier seulement une fonction vide qui est d'ailleurs mal écrite(erreur qui risque pas que quoi que soit fonctionne) et une variable qui fait référence à elle même lors de sa déclaration.
la parenthèse ouverte devant le mot clé function n'est jamais refermée(celle ci à priori si fermée permet d'isoler le code du reste donc définir sa sécurité - rien n'y rentre d'extérieur à ce qui est dans les parenthèses encioore faut il la refermer pour cela). Le code inclus dedans étant inexistant ...ça pourra jamais rien faire.
Le symbole "=" est utilisé pour attribuer une variable(ici 'ad') or dans sa définition vous indiquez ad = ad donc la valeur de ad est elle même et n'existe pas ou alors('||') un tableau vide.

https://www.lehtml.com/js/var.htm

Rien de cela n'a de sens (vous ne pouvez créer une variable qui a la valeur d'elle même puisque avant sa création celle ci n'existe tout simplement pas)et sans le tuto impossible de voir ce qui est censé être fait.

Soit le tuto que vous avez utilisé est mauvais soit vous ne l'avez pas compris. Cela aurait été bien de mettre le lien du tuto pour comprendre de quoi vous parlez.

Le mieux est de vous référer à la doc de la librairie que vous utilisez:
https://github.com/turbolinks/turbolinks

Surtout que quand je lis la description de turbolinks je ne voit pas vraiment le rapport avec votre question de chargement de fichier:

Turbolinks intercepts all clicks on <a href> links to the same domain. When you click an eligible link, Turbolinks prevents the browser from following it. Instead, Turbolinks changes the browser's URL using the History API, requests the new page using XMLHttpRequest, and then renders the HTML response.

ça a plutôt rapport avec les liens et une application qui permet d'utiliser AJAX.

Turbolinks intercepte tout les clicks sur les liens <a href> pour le même domaine(site web). Quand vous cliquez sur un lien éligible(existant) Turbolinks prévient(empêche) le navigateur de les suivre(effectuer la redirection).
A la place Turbolinks change l'URL du navigateur en utilisant History API(l'historique du navigateur en gros), demande la nouvelle page en utilisant XMLHttpRequest(la technologie AJAX) et alors rends une réponse HTML(une page web).

ps: un fichier qui n'est pas chargé sur le réseau (Internet) n'existe simplement pas.
Turbolinks se propose de jouer sur le cache en utilisant AJAX pour y stocker les pages déjà visitées.
Donc si vous voulez charger la page autrement n'utilisez pas Turbolinks.

https://developer.mozilla.org/en-US/docs/Web/API/History_API
0
franksh Messages postés 40 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 1 novembre 2023
Modifié le 28 mars 2021 à 11:36
Bonjour, merci de votre reponse, c'est pas un tuto que je suivi ce code la
 var ad = ad || [];
(fonction (){
    
    } ();


ce pas mon code sa vient de notifadz un plateforme de ads web
c'est pas ma première fois d'utiliser la librairie Turbolinks ex:

 fonction ads(){
    alert();
   //  code notifadz ici 
  }
ads(); // Execute de la 1 ere page

document.addEventListener ("turbolinks: load", ads);

cette code fonctionne a chaque fois qu'on clique sur un lien, imaginons que le code ci-dessus est intégrer dans un fichier .js qui est inclus sur toutes les pages du site.
turbolinks quand on lui demander pas il execute le js qu'une fois par ex le code de notifadz il fonctionne bien a la page d'acceuil mais une fois cliquer sur un autre page qui bien sur le .js est inclus aussi sa marche pas.

voici le code complet de notifadz
 var _nAdz_pipq = _nAdz_pipq || [];
  (function(){
  _nAdz_pipq.push(['setIds', '123456789']);
  _nAdz_pipq.push(['setVrt', 'domaine']);
  _nAdz_pipq.push(['startP']);
  var u = 'https://pushinpage.com/scripts/';
  var s = document.createElement('script');
  s.type = 'text/javascript';
  s.defer = true;
  s.async = true;
  s.src = u + 'pip-sdk.js';
  var p = document.getElementsByTagName('script')[0];
  p.parentNode.insertBefore(s, p);
})();
0
PowerWave > franksh Messages postés 40 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 1 novembre 2023
1 avril 2021 à 09:24
un code incomplet (et ici erroné aussi ce qui va souvent ensemble) ne sert donc à rien.
Je vous ait envoyé vers la doc de la bibliothèque que vous utiliser pour cette raison. Êtes vous aller voir parce que sans lire "la notice" c'est un peu normal de pas savoir non?

Un exemple ne sert à rien si vous ne le comprenez pas à part illustrer quelque chose.
Le fait qu'il y ait une parenthèse non fermée est une erreur grossière et je vous ait expliqué le principe(de base) que vous pouvez trouver de façon plus détaillée ici:

https://qastack.fr/programming/592396/what-is-the-purpose-of-a-self-executing-function-in-javascript
0