All streams
Search
Write a publication
Pull to refresh
316
30.4
Igor Agapov @aio350

JavaScript Developer

Send message
Спасибо за статью
Отличная статья. Спасибо
А у меня аськи никогда не было либо я этого не помню. Автору спасибо за отличную статью
Добавлю, когда статья получит оценку профессионального сообщества и будет отредактирована с учетом замечаний и предложений коллег
Спасибо за автора и за статью, внес соответствующие правки
согласен, поправил
Смотрите, без try/catch и вашей функции (clampNumber) это выглядит так (уменьшаем громкость):
document.addEventListener("keydown", e => {
    if (e.keyCode == 32) {
        audio.paused ? audio.play() : audio.pause();
    } else if (e.keyCode == 13) {
        audio.load();
    } else if (e.keyCode == 39) {
        audio.currentTime += 10;
    } else if (e.keyCode == 37) {
        audio.currentTime -= 10;
    } else if (e.keyCode == 40) {
        audio.volume -= 0.1;
        console.log(audio.volume)
    } else if (e.keyCode == 38) {
        audio.volume += 0.1;
        console.log(audio.volume)
    }
});



C вашей функцией так:
document.addEventListener("keydown", e => {
    if (e.keyCode == 32) {
        audio.paused ? audio.play() : audio.pause();
    } else if (e.keyCode == 13) {
        audio.load();
    } else if (e.keyCode == 39) {
        audio.currentTime += 10;
    } else if (e.keyCode == 37) {
        audio.currentTime -= 10;
    } else if (e.keyCode == 40) {
        audio.volume = clampNumber(audio.volume - 0.1);
    } else if (e.keyCode == 38) {
        audio.volume = clampNumber(audio.volume + 0.1);
    }
});



Проблема исключений решается, странные значения остаются. Результат такой же, как при использовании try/catch, но пришлось написать целую функцию (которая иногда приводит к громкости = 79, 89 и т.д.). С диапазоном согласен.
С подсказкой экспериментировал, вариант с console показался оптимальным, но, возможно, Вы правы. Использование $ в качестве ссылки на контекст холста является распространенной практикой (удобно: все методы холста начинаются с контекста)
Все началось со злоупотребления атрибутом autoplay тегов «audio» и «video» (и методом play сразу после window.onload), это сильно раздражало пользователей. В случае с видео включить автопроигрывание можно только в беззвучном режиме (muted), аудио запускается только «по желанию» пользователя
Интересная точка зрения.
Потому что не все статьи и переводы получаются удачными. Если профессиональное сообщество реагирует отрицательно, значит, статья получилась плохой. Плохие статьи я либо дорабатываю, либо удаляю. Публицистика для меня — часть самообразования. Я всегда готов прислушаться к мнению более опытных коллег и признать ошибку, если таковая действительно имела место.
1. Видимо раздел логические операторы на MDN переводил тоже непрограммист:
Выполнение короткого замыкания
Так как логические операторы выполняются слева направо, они тестируются на возможные «короткие замыкание», при использовании следующих прав:
false && (anything) короткое замыкание, дающее false.
true || (anything) короткое замыкание, дающее true.

2. Цитата с MDN: унарный плюс — быстрейший и предпочитаемый способ конвертирования чего-либо в число потому, что он не выполняет каких-либо операций с числом.

3. Из статьи: Remember properties in an object which does not exist in itself and its prototype has a default value of undefined and undefined has no property x. Согласен, что не вполне корректно. Вероятно, автор имел ввиду, что obj.__proto__.__proto__ = null, поэтому возвращается undefined, у которого, естественно, отсутствует свойство x.
пропустил пробел между кавычками. спасибо
у меня не было цели написать полноценный сборщик. В полноценном сборщике, кроме возможности скачать архив с кодом, должна быть вариативность кнопок, эффекта переключения, количества одновременно показываемых слайдов и т.д. Одним из лучших подобных инструментов является Image Slider Maker. Вы посмотрите, сколько там кода, но даже его нужно править, чтобы слайдер на странице работал как надо.
по порядку:
изображение, по которому кликнули — первый слайд — логично, но пришлось повозиться. Посмотрите на решение, оно далеко не очевидное. Если память мне не изменяет, я получил его методом перебора;
возможность получить готовый код — готовый код можно использовать для готовой галереи и слайдера. Помещаете готовый код в body, добавляете стили, отредактированный скрипт и пользуетесь (что-то типа результата сборки);
попробуйте более рационально использовать видимую область экрана при условии, что, во-первых, мы не знаем размеров и ориентации загружаемых изображений, во-вторых, галерея и слайдер должны одинаково хорошо смотреться на экранах с разным разрешением. Если получится, поделитесь кодом;
что касается исчезновения кода при повторном нажатии getCodeButton, я этого не планировал, но можно переписать эту часть (после else, вместо return):
getCodeButton.addEventListener('click', () => {
    if (document.querySelector('p') == null) {
      // ...
    } else {
      let p = document.querySelector('p')
      document.body.removeChild(p)
    }
})

… и код будет исчезать.
Спасибо за комментарий.
возможность редактирования стилей элемента пользователем — это интересно. про visibility дочернего элемента не знал (или знал, но забыл), пару раз требовалось нечто подобное (уже не помню решения). clip-path давно собираюсь поизучать, все никак руки не доходят)

Information

Rating
239-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Frontend Developer
Senior
JavaScript
HTML
React
TypeScript
CSS
Web development
Node.js
Express
Webpack
NextJS