Guest User

Untitled

a guest
Jul 23rd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. const fetchers = {};
  2.  
  3. function prefetchCleanup(event) {
  4. clearTimeout(fetchers[event.target.href]);
  5. event.target.removeEventListener('mouseleave', prefetchCleanup);
  6. }
  7.  
  8. document.addEventListener('mouseover', event => {
  9. let url = event.target.href;
  10. clearTimeout(fetchers[url]);
  11. if (!event.target.dataset.prefetch) return;
  12. if (Turbolinks.controller.cache.has(url)) return;
  13.  
  14. event.target.addEventListener('mouseleave', prefetchCleanup);
  15.  
  16. fetchers[url] = setTimeout(() => {
  17. const iframe = document.createElement('iframe');
  18. iframe.setAttribute('style', 'display:none');
  19. iframe.setAttribute('src', url);
  20. iframe.addEventListener('load', () => {
  21. Turbolinks.controller.cache.put(
  22. url,
  23. Turbolinks.Snapshot.fromElement(iframe.contentDocument.documentElement)
  24. );
  25. iframe.parentElement.removeChild(iframe);
  26. });
  27. document.body.appendChild(iframe);
  28. }, 600);
  29. });
Add Comment
Please, Sign In to add comment