Skip to content

Instantly share code, notes, and snippets.

@luislobo14rap
luislobo14rap / addAudioAndVideoShortcuts.js
Last active January 8, 2021 01:10
addAudioAndVideoShortcuts.js
// addAudioAndVideoShortcuts.js v1.1
function addAudioAndVideoShortcuts(videos) {
if (typeof videos == 'undefined') {
// if defined
videos = document.querySelectorAll('audio:not(.key-shortcuts), video:not(.key-shortcuts)');
} else if (typeof videos.length == 'undefined') {
// if node
videos = [videos];
};
videos.forEach(function(element) {
@luislobo14rap
luislobo14rap / force-to-https.js
Last active February 4, 2020 18:49
force-to-https.js
// force-to-https.js v1
function forceToHttps() {
if (location.protocol == 'http:') {
var linkHttps = location.href.replace('http', 'https');
// via location
window.location.protocol = 'https:';
window.location.href = linkHttps;
// via click
var a = document.createElement('a');
a.setAttribute('href', linkHttps);
@luislobo14rap
luislobo14rap / uniqueObjs.js
Created January 29, 2020 18:57
uniqueObjs.js
// uniqueObjs.js v1
function uniqueObjs(array_) {
let compare = [];
let unique = [];
for (let i = 0; i < array_.length; i++) {
let thisObj = array_[i];
let objAsString = JSON.stringify(thisObj).toLowerCase();
if (compare.indexOf(objAsString) == -1) {
compare.push(objAsString);
unique.push(thisObj);
@luislobo14rap
luislobo14rap / throttle.js
Last active December 11, 2024 04:24
throttle.js
// throttle.js v1
function throttle(func, wait) {
let wasCalled = false;
return function() {
if (!wasCalled) {
func();
wasCalled = true;
setTimeout(function() {
wasCalled = false;
}, wait);
@luislobo14rap
luislobo14rap / sort-json.js
Last active March 29, 2020 16:54
sort-json.js
// sort-json.js v1
function sortJson(json, rules) {
let keys = Object.keys(json);
keys = keys.sort(typeof rules == 'function' ? rules() : rules);
let newJson = {};
for (let i = 0; i < keys.length; i++) {
newJson[keys[i]] = json[keys[i]];
};
return newJson;
};
@luislobo14rap
luislobo14rap / create-style.js
Last active January 18, 2024 21:42
create-style.js
// create-style.js v1
function createStyle(cssString) {
const head = document.querySelector("head"),
style = document.createElement("style")
style.setAttribute("type", "text/css")
style.append(document.createTextNode(cssString))
head.append(style)
}
@luislobo14rap
luislobo14rap / require-script.js
Created December 25, 2019 00:03
require-script.js
// require-script.js v1
function requireScript(url, scope = document.querySelector('head')) {
let script = document.createElement('script');
get(url, function(xhr, data) {
script.innerHTML = data;
scope.appendChild(script);
});
};
@luislobo14rap
luislobo14rap / if-this-type-changes.js
Created December 25, 2019 00:03
if-this-type-changes.js
// if-this-type-changes.js v1
function ifThisTypeChanges(observed, callback, scope = window) {
let originalType = typeof scope[observed];
let interval = setInterval(function() {
let newType = scope[observed];
if (originalType != newType) {
clearInterval(interval);
callback(originalType, newType);
};
}, 10);
@luislobo14rap
luislobo14rap / get.js
Created December 25, 2019 00:01
get.js
// get.js v1
function get(url, callback) {
let request = new XMLHttpRequest();
request.open('GET', url, true);
request.onload = function() {
callback(this, this.responseText);
};
request.send();
};
@luislobo14rap
luislobo14rap / capitalizeCase.js
Created December 23, 2019 12:25
capitalizeCase.js
// capitalizeCase.js v1
function capitalizeCase(text){
return text.toLowerCase().replace(/\b[a-z]/g, function(value){
return value.toUpperCase();
});
};
String.prototype.capitalizeCase = function(){
return capitalizeCase(this.toString());
};