Skip to content

Instantly share code, notes, and snippets.

View donbrae's full-sized avatar

donbrae

View GitHub Profile
@donbrae
donbrae / loop.js
Last active July 17, 2022 12:25
Basic looping in JavaScript.
// Loop array
const foo = ["ane", "twa", "three"];
foo.forEach(item => console.log(item));
// Loop DOM elements
document.querySelectorAll('.foo').forEach(el => {
el.classList.add('bar'); // Add class, for example
});
@donbrae
donbrae / scrollTo.js
Last active July 17, 2022 12:24
JavaScript `scrollTo`.
window.scrollTo({
top: document.getElementById('foo').offsetTop,
left: 0,
behavior: 'smooth'
});
@donbrae
donbrae / fetch.js
Last active August 1, 2022 13:50
Example: `fetch` JSON file.
// Fetch JSON data
fetch('https://jsonplaceholder.typicode.com/todos/').then(response => {
// Success
if (response.ok)
return response.json(); // Returns to then()
// Error
return Promise.reject(response);
@donbrae
donbrae / event-delegation.js
Last active July 17, 2022 11:26
JavaScript event delegation (vanilla JS vs jQuery)
document.addEventListener('click', function (e) {
for (let target = e.target; target && target != this; target = target.parentNode) {
if (target.matches('.foo')) {
// ⋯
e.preventDefault();
break;
} else if (target.matches('.bar')) {
// ⋯
e.preventDefault();
}
@donbrae
donbrae / xhr-request.js
Last active July 5, 2022 11:54
Vanilla JS Ajax/XHR request
function XHRRequest(url, type = 'text/plain') {
const request = new XMLHttpRequest();
request.open('GET', `${url}?${new Date().getTime()}`, true);
request.setRequestHeader('Content-type', type);
request.onload = function () {
if (this.status >= 200 && this.status < 400) { // Success
console.log('Success', this.response);
} else
@donbrae
donbrae / get-cookies.js
Created August 18, 2020 11:54
Get list of currently set cookies
(function () {
let cookies = [];
document.cookie.split(';').forEach(cookie => {
cookies.push(cookie.split('=')[0]);
});
console.log(cookies.join(','));
})();
@donbrae
donbrae / pdf-page-numbers
Created August 5, 2019 10:51
Bash script to add page numbers to PDFs. Liftit frae http://forums.debian.net/viewtopic.php?t=30598#p174267.
#!/bin/sh
# we'll hide the work in a temporary directory
mkdir tmp_num
cp numbers.pdf tmp_num/.
cp newbook.pdf tmp_num/.
cd tmp_num/
# burst newbook into its component pages and extract total pages
pdftk newbook.pdf burst output book_%04d.pdf
@donbrae
donbrae / css-snippets.md
Last active May 2, 2023 14:18
Random CSS snippets

Subtle box shadows

These work best with light (~#fff) elements (eg a code snippet or ‘card’ component) on light backgrounds.

Standard

box-shadow: 0 1px 15px rgba(27, 31, 35, .15);
# HTTPS redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>
# END HTTPS
# Force non-www SSL
# https://simonecarletti.com/blog/2016/08/redirect-domain-http-https-www-apache/
@donbrae
donbrae / MY_MODULE.js
Last active August 18, 2020 12:59
Basic JavaScript module pattern
/**
* @name MY_MODULE
* @author Jamie Smith
* @description Basic JavaScript module template with config and state objects, and private and public functions
*/
const MY_MODULE = (function () {
"use strict";