Melin's Blog

Latest posts

See all posts
  • Starting From `visibilitychange` Not Working in Safari
    The visibilitychange event has been around for a long time. I first wrote about it back in 2012 in an article introducing the Page Visibility API. At the time, it felt like a cl...
  • Browsers Now Natively Support JSON Module Imports for Development
    Original article by zhangxinxu. Source: https://www.zhangxinxu.com/wordpress/?p=12241. This adaptation preserves the original author, source, and links. For years, importing JSO...
  • Deep Dive Into JavaScript Randomness: `Math.random()` vs `crypto.getRandomValues()`
    Random numbers show up everywhere in JavaScript: temporary IDs, animations, randomized UI effects, shuffling lists, lottery-style selection, tokens, UUIDs, encryption keys, and...
  • When Should JavaScript Tagged Templates Be Used?
    JavaScript template strings are familiar to most developers: They make string interpolation readable and convenient. But JavaScript also has a more advanced form: tagged templat...
  • An Audio Player Component Built with howler.js
    Originally published by zhangxinxu on March 15, 2022, under “JS Examples.” Source: Xin Space - Xin Life. Audio playback looks simple until you need a real player: playlist navig...
© 2026 • Melin
Press Esc or click anywhere to close