Skip to content

Instantly share code, notes, and snippets.

@townivan
townivan / a11y-tracking-pixels.js
Last active Jun 17, 2021
Those annoying tracking pixels mess up my a11y scan. This is an attempt to add alt, role, and aria attributes to these guys. Uses MutationObserver to immediately update the img tags when they are added to the DOM by the tracking snippet's action.
View a11y-tracking-pixels.js
// early in the head as possible
var observer = new MutationObserver(function(mutations){
for (var i=0; i < mutations.length; i++){
for (var j=0; j < mutations[i].addedNodes.length; j++){
checkNode(mutations[i].addedNodes[j]);
}
}
});
observer.observe(document.documentElement, {
@townivan
townivan / setAttrib.js
Created Oct 6, 2020
a function to set an attribute with JavaScript
View setAttrib.js
function sestAttrib(el_id, el_attr, el_value){
if (document.getElementById(el_id)){ // if element exists
document.getElementById(el_id)[el_attr] = el_value;
}
}
View dotNetCorePractice.cs
using System;
using System.Collections.Generic;
// test at https://dotnetfiddle.net/
public class Program
{
public static void Main()
{
Console.WriteLine("List practice");
@townivan
townivan / setup.js
Last active Dec 26, 2019
quick gulp4 project setup
View setup.js
npm i gulp -D
npm i browser-sync -D
npm i gulp-sass -D
// favicon fix for index.html
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
touch gulpfile.js
// This gulpfiles expect a 'dist' and 'src' folder (for easy ftp, less easy for github pages)
View ie11-DOM-looping.js
// converting nodelist to an array...for ie11:
// ie11 won't like [...nodelist] or Array.from(nodelist) so use:
let elements = Array.prototype.slice.call(document.querySelectorAll('.things'));
// looping through the array....for ie11:
// ie11 won't like elements.map() so use:
elements.forEach(function(el) {
console.log('el:', el);
});
View destructuring_useful.js
/**
* Be amazed at this use for destructuring
* If you pass args as an obj instead of
* distinct values like f('red','male',23)
* You can use destructuring in the function
* to get what you want without needing to
* figure out which position it should be in!
*/
function f( {name, age} = {}){ // destructure the received {} to name and age.
console.log('age:',age); // age: 23
@townivan
townivan / local-php-on-mac.txt
Created Aug 22, 2019
Run php locally on mac
View local-php-on-mac.txt
php -S 127.0.0.1:8080
@townivan
townivan / find-that-object.js
Created Aug 16, 2019
Get a matching object from an array of objects with a specific value for a property
View find-that-object.js
thingArray.filter(thing => (thing.Name === "Larry"));
@townivan
townivan / .htaccess
Created Jul 15, 2019
htaccess which redirects http://domain, https://domain, http://www.domain to https://www.domain
View .htaccess
# if host contains www - skip redirect to www
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule .? - [S=1]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# redirect all to https
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
@townivan
townivan / gulpfile.esm.js
Created May 31, 2019
Gulp4 gulpfile w/ basic browserSync+sass. This uses es6 modules via the esm package, hence the .esm.js extension
View gulpfile.esm.js
// renames to gulpfile.esm.js to use the esm package support of es6 module 'import' syntax
import gulp from 'gulp';
import sass from 'gulp-sass';
import browserSync from 'browser-sync';
const myGlobs = {
scssSource: './app/scss/**/*.scss', // includes .scss files in any subfolders of ./scss also
cssDest: './app/css',
htmlSource: './app/*.html',