Promises are the new way™ to express "Do this, and once you're done, do that". In contrast to callbacks...
If you need to modify (e.g. add 2px) a Sass variable that defines multiple values as one (e.g. for short...
To simulate Rails' to_sentence in your JavaScript application, you can use these few lines of CoffeeScript code: joinSentence = (array...
Here is a symbol of an eight note: ♪ Its two-byte hex representation is 0x266A. This card describes how to...
When building a web application, one is tempted to claim it "done" too early. Make sure you check this list...
You can define methods using def or define_method. In the real world, there is no performance difference.
All new browsers support the new object-fit CSS property. It allows to specify how an element behaves within its...
The way that Javascript schedules timeouts and promise callbacks is more complicated than you think. This can be the reason...
to create a Gallery that has a name and has_many :images, which in turn have a...
The attached ImageLoader helper will start fetching an image and return an image that is resolved once the image is...
Sometimes you want to preload images that you will be using later. E.g. if hovering over a an area changes...
To delay your entire Jasmine test suite until the DOM is ready, add the following: beforeAll(function(done) { $(done); });
When you have a localized website, you may want to redirect users to their preferred language when they visit the...
fake_stripe spins up a local server that acts like Stripe’s and also serves a fake version of Stripe.js...
You can use JavaScript to get or set cookie values on the client. Using the vanilla JavaScript API
The NestedHash class allows you to read and write hashes of any depth. Examples: hash = {} NestedHash.write hash, 'a', 'b', 'c...
The attached Coffeescript helper will let you create mouse events: $element = $('div') Trigger.mouseover($element) Trigger.mouseenter($element) Trigger.mousedown($element) Trigger.mouseup($element...
Some modern Javascript APIs return iterators instead of arrays. In plain Javascript you can loop through an iterator using
To upload a file via AJAX (e.g. from an ) you need to wrap your params in a FormData object.
This will give the target site full access to your Javascript environment through window.opener, if the target is on the...
A HTTP 302 Found redirect to PATCH and DELETE requests will be followed with PATCH or DELETE. Redirect responses to...
In JavaScript we often use Immediately Invoked Function Expessions (or IIFEs) to prevent local variables from bleeding into an outside...
During debugging you might pepper your code with lines like these: console.log('foo = ' + foo + ', bar = ' + bar) I recommend to use...
There are cases when you need to select DOM elements without jQuery, such as: when jQuery is not available