- Overview
- Documents
Pace is a javascript library that automatically adds a progress bar to your site.
Include pace.js and a CSS theme of your choice, and you get a beautiful progress indicator for your page load and ajax navigation.
No need to hook into any of your code, progress is detected automatically.
sex shop sex shop sex shop sex shop sex shop seks shop spanish fly psikolog sohbet numara sohbet hatti
Source: github.hubspot.com
1. INCLUDE JS AND CSS FILES
Include pace.js and the theme css of your choice on your page (as early as is possible), and you're done!
<script src="/pace/pace.js"></script> <link href="/pace/themes/pace-theme-barber-shop.css" rel="stylesheet" />
Pace will automatically monitor your ajax requests, event loop lag, document ready state, and elements on your page to decide the progress. On ajax navigation it will begin again!
2. CONFIGURATIONS
Pace is fully automatic, no configuration is necessary to get started.
If you would like to make some tweaks, here's how:
You can set window.paceOptions before bringing in the file:
paceOptions = { // Disable the 'elements' source elements: false, // Only show the progress on regular and ajax-y page navigation, // not every request restartOnRequestAfter: false }
You can also put options on the script tag:
<script data-pace-options='{ "ajax": false }' src='pace.js'></script>
If you're using AMD or Browserify, you can pass your options to start:
define(['pace'], function(pace){ pace.start({ document: false }); });
3. THEMES
Pace includes a bunch of themes to get you started. Just include the appropriate css file. Send us a PR with any interesting themes you create.
4. COLLECTORS
Collectors are the bits of code which gather progress information. Pace includes four default collectors:
-
Ajax
Monitors all ajax requests on the page
-
Elements
Checks for the existance of specific elements on the page
-
Document
Checks the document readyState
-
Event Lag
Checks for event loop lag signaling that javascript is being executed
They can each be configured or disabled through configuration options of the same name.
paceOptions = { ajax: false, // disabled document: false, // disabled eventLag: false, // disabled elements: { selectors: ['.my-page'] } };
Add your own classes to paceOptions.extraSources to add more sources. Each source should either have a.progress property, or a .elements property which is a list of objects with .progress properties. Pace will automatically handle all scaling to make the progress changes look smooth to the user.
5. ELEMENTS
Elements being rendered to the screen is one way for us to decide that the page has been rendered. If you would like to use that source of information (not required at all), specify one or more selectors. You can comma seperate the selectors to propertly handle error states, where the progress bar should disappear, but the element we are looking for may never appear:
paceOptions = { elements: { selectors: ['.timeline,.timeline-error', '.user-profile,.profile-error'] } }
Pace will consider the elements test successful when each selector matches something. For this example, when either .timeline or .timeline-error exist, and either .user-profile or .profile-error exist.
6. RESTART RULES
Most users want the progress bar to automatically restart when a pushState event occurs (generally means ajax navigation is occuring). You can disable this:
paceOptions = { restartOnPushState: false }
You can also have pace restart on every ajax request which lasts longer than x ms. You'll want to disable this if you make ajax requests the user doesn't need to know about, like precaching:
paceOptions = { restartOnRequestAfter: false }
You can always trigger a restart manually by calling Pace.restart()
7. API
Pace exposes the following methods:
-
Pace.start: Show the progress bar and start updating. Called automatically if you don't use AMD or CommonJS.
-
Pace.restart: Show the progress bar if it's hidden and start reporting the progress from scratch. Called automatically whenever pushState or replaceState is called by default.
-
Pace.stop: Hide the progress bar and stop updating it.
-
Pace.track: Explicitly track one or more requests, see Tracking below
-
Pace.ignore: Expliticly ignore one or more requests, see Tracking below
8. EVENTS
Pace fires the following events:
- start: When pace is initially started, or as a part of a restart
- stop: When pace is manually stopped, or as a part of a restart
- restart: When pace is restarted (manually, or by a new AJAX request)
- done: When pace is finished
- hide: When the pace is hidden (can be later than done, based on ghostTime and minTime)
You can bind onto events using the on, off and once methods:
- Pace.on(event, handler, [context]): Call handler (optionally with context) when event is triggered
- Pace.off(event, [handler]): Unbind the provided event and handler combination.
- Pace.once(event, handler, [context]): Bind handler to the next (and only the next) incidence of event
9. TRACKING
By default, Pace will show any ajax requests which begin as a part of a normal or ajax-y page load, or which last longer than 500ms.
You can disable all ajax tracking by setting ajax to false:
Pace.options = { ajax: false }
You can disable ajax tracking except on page navigation by setting restartOnRequestAfter to false:
Pace.options = { restartOnRequestAfter: false }
You can manually disable tracking for a specific request or requests by triggering them within a Pace.ignorecallback:
Pace.ignore(function(){ $.ajax(...) });
You can force the progress bar to be shown for a specific request by triggering them within a Pace.trackcallback:
Pace.track(function(){ $.ajax(...) });
You can also ignore URLs based on a pattern:
Pace.options = { ajax: { ignoreURLs: ['some-substring', /some-regexp/] } }