2016-07-17 120 views
5

Vorrei eseguire alcune righe di j ogni volta che i caricatori di tensione sono caricati (cioè, la pagina è caricata), non i js dalla cache, ma vorrebbero forzare l'esecuzione prima che l'evento dei turbolinks si carichi, ogni volta. È possibile?Esegui JS ogni volta sull'evento dei turbolinks caricati nell'app Rails 5

Sto cercando di sbarazzarsi di FOUC qui, nascondendo il corpo html e fare questo in app.js.coffee

$(document).on 'turbolinks:load', -> 
    document.body.style.visibility = 'visible' 

Ma la FOUC inizia a calci nel dopo il 3 ° o 4 ° tempo di ricarico la pagina.

Per vedere questo live in azione, here è un collegamento al sito Web.

risposta

1

Quindi, il FOUC accoppiato con i turbolinks può essere molto irritante. Quello che abbiamo finalmente fatto per risolvere il problema era nascondere tutto il corpo con un porcile in linea e ha aggiunto un tag script all'interno del corpo:

<script type="text/javascript"> 
     document.body.style.visibility = 'visible' 
</script> 

Questo assicurato che quando turbolinks è in azione carica soltanto il corpo del codice HTML, quindi avere una sceneggiatura all'interno del corpo faceva in modo che il js girasse ogni volta che c'era un carico di turbolinks.

2

I turbolinks si caricano solo quando si utilizzano collegamenti in tale pagina, non quando si aggiorna la pagina o si naviga tramite l'url. Se si desidera eseguire js quando la pagina viene caricata, utilizzare $(document).ready(function() { executable js here });

+0

In realtà vogliamo eseguire js quando si fa clic su un link turbolinks abilitato, si prega di controllare il sito web indicato sul link nella domanda, per vedere il FOUC in azione. Inoltre, se noti nell'ispettore l'intero corpo è nascosto e mostrato di nuovo per nascondere il FOUC. Ma in qualche modo i tempi sembrano essere un po 'spenti. – Jeevan