Skip to content

Instantly share code, notes, and snippets.

@erratir
erratir / popup.js
Last active April 27, 2024 03:20
CromeExtension popup.js: Отправляет сообщение в контент скрипт
/**
* Отправляет сообщение в контент скрипт.
* Вызвается из обработчика (например клик по кнопке), на вход принимает событие evt из которого получаем evt.target.id
* Т.е. индентифицируем кнопку на которой произошло событие и отправляем и ее id в качестве темы сообщения
* В content.js соответсвенно добавляем слушатель:
* chrome.runtime.onMessage.addListener((msg, sender, response) => { // тут код if (msg.subject === ..) });
* @param {event} evt
* @return {Promise<void>}
*/
let sendMsgToContent = async function (evt) {
@erratir
erratir / utils.js
Last active April 27, 2024 03:27
Функция переименовывает ключи переданного объекта
/**
* Функция переименовывает ключи переданного ей объекта
* См. http://qaru.site/questions/41346/javascript-object-rename-key
*
* ES6 может сделать это в одну строку: delete Object.assign(o, {[newKey]: o[oldKey] })[oldKey];
* Или две строки, если вы хотите создать новый объект:
* const newObject = {};
* delete Object.assign(newObject, o, {[newKey]: o[oldKey] })[oldKey];
*
* @param {object} obj
@erratir
erratir / delay.js
Created August 2, 2019 15:50 — forked from eteeselink/delay.js
ES7 async/await version of setTimeout
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
async function something() {
console.log("this might take some time....");
await delay(5000);
console.log("done!")
}
something();
@erratir
erratir / utils.js
Created August 2, 2019 15:34
* Запускать функцию с рендомным интервалом, в заданном диапазоне - упрощенный вариант
/**
* Запускать функцию с рендомным интервалом, в заданном диапазоне - упрощенный вариант
* https://stackoverflow.com/questions/34656758/javascript-setinterval-with-random-time?rq=1
*/
function myFunction() {
alert(`oo`);
setTimeout(myFunction, Math.random() * 5000);
}
myFunction();
@erratir
erratir / utils.js
Last active August 3, 2019 14:20
Запускать функцию с рендомным интервалом, в заданном диапазоне
/**
* Запускать функцию с рендомным интервалом, в заданном диапазоне
* https://stackoverflow.com/questions/34656758/javascript-setinterval-with-random-time?rq=1
*/
function myFunction() {
const min = 5;
const max = 10;
let rand = Math.floor(Math.random() * (max - min + 1) + min); // Generate Random number between 5 - 10
alert(`Wait for ` + rand + ` seconds`);
setTimeout(myFunction, rand * 1000);
@erratir
erratir / utils.js
Created August 2, 2019 15:11
Вызывает переданную ей функцюи с задержкой
/**
* Вызывает переданную ей функцюи с задержкой
* https://learn.javascript.ru/task/delay
* @param f
* @param ms
* @return {Function}
*/
export const delay = function (f, ms) {
return function () {
@erratir
erratir / utils.js
Created August 2, 2019 00:21
Возвращает ключ объекта по его значению.
/**
* Возвращает ключ объекта по его значению. Нет функционала в js ?
* Вернет только первый ключ, если одинаковых значений несколько?
* @param {object} obj
* @param {any} value
* @return {string | undefined}
*/
const getKeyByValue = (obj, value) =>
Object.keys(obj).find((key) => obj[key] === value);
@erratir
erratir / debounce.html
Last active April 27, 2024 03:28
debounce - `Устранение дребезга`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button>
Click me! → And see console!
</button>
@erratir
erratir / returnUniqueArray.js
Last active April 27, 2024 03:29
Функция возвращает массив с уникальными элементами
/**
* Функция возвращает массив с уникальными элементами
* Только в ES6 https://webformyself.com/kak-proizvesti-udalenie-dublej-massiva-v-es6/
* @param {array} arr
* @return {any[]}
*/
function returnUniqueArray(arr) {
return Array.from(new Set(arr));
}
@erratir
erratir / shuffle.js
Last active April 6, 2019 11:56
Функция возвращает массив со случайно перемешанными элементами
/**
* Функция возвращает массив со случайно перемешанными элементами
* https://habr.com/ru/post/358094/
* @param {array} arr
* @return {array}
*/
function shuffle(arr){
let j, temp;
for(let i = arr.length - 1; i > 0; i--){
j = Math.floor(Math.random()*(i + 1));