Skip to content
DoubleTakeScript loader. This is a simple way to load a local copy of a library as a fallback to an external CDN.
HTML JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE
README.md
dt-script-loader.js
dt-script-loader.min.js
dt.png
index.html
jquery-1.10.2.min.js
underscore-min.js

README.md

Double Take Script Loader

Double Take Script Loader

This is a simple way to load a local copy of a library as a fallback to an external CDN.

Demo

But CDNs are awesome!?

Yes they are. There are actually some people who believe you should not use CDNs. If you do decide to use a CDN, you should know that they can fail (unlikely) or be blocked for certain countries (rare, but possible). If a CDN fails and your site depends on that libary, then your site could really suffer and your bounce rate will go to infinity and beyond!

How do I use this?

There are two ways to use this:

1. Call DoubleTakeScriptLoader: Call directly with an array of objects (or a single object) like so:

DoubleTakeScriptLoader([
  {
    propName: '$', //Name of global object which would be loaded if the library loaded correctly
    localSource: 'js/jquery-1.10.2.min.js', //Location of local copy. What src would be if you're not using a CDN
    originalId: 'jQueryScript' //Optional: An id you give to the original script tag. Used to remove the old script tag.
  },
  { ... }
]);

2. Add data attributes: Add data-prop-name and data-local-src to script tags you wish to do a double take on. Like so:

<script src="http://cdn.example.com/underscore/1.4.4/underscore-min.js" data-prop-name="_" data-local-src="underscore-min.js"></script>

With either method, you must add a script tag for the dt-script-loader.js file after the library script tags, but before you use the libraries.

Other info

Note: dt-script-loader.js immediate calls DoubleTakeScriptLoader() with no arguments which will search the DOM for script tags which have the necessary data attributes. If this is a problem, just use method 2 (calling it directly). Or heck, it's not some sort of big library or anything, just remove the invocation yourself.


Disclaimer

I developed this quickly one Saturday afternoon. I imagine there could be some improvement to performance or something here. Feel free to leave comments to that effect :)

Bitdeli Badge

You can’t perform that action at this time.