2024-08-14
4030
#html
Glad Chinda
1855
Aug 14, 2024 ⋅ 14 min read

Programmatically downloading files in the browser

Glad Chinda Full-stack web developer learning new hacks one day at a time. Web technology enthusiast. Hacking stuffs @theflutterwave.

Recent posts:

6 fast (native) alternatives for VSCode

VSCode has architectural performance limits. Compare six fast, native code editors built for lower resource usage.

Shalitha Suranga
Jan 9, 2026 ⋅ 10 min read

Moving beyond RxJS: A guide to TanStack Pacer

Build a React infinite scroll gallery with TanStack Pacer. Learn debouncing, throttling, batching, and rate limiting without RxJS complexity.

Emmanuel John
Jan 9, 2026 ⋅ 8 min read
the replay january 7

The Replay (1/7/26): React’s biggest problem, TanStack’s evolution, and more

Discover what’s new in The Replay, LogRocket’s newsletter for dev and engineering leaders, in the January 7th issue.

Matt MacCormack
Jan 7, 2026 ⋅ 31 sec read
jack herrington useeffectevent

React has finally solved its biggest problem: The joys of useEffectEvent

Jack Herrington breaks down how React’s new useEffectEvent Hook stabilizes behavior, simplifies timers, and enables predictable abstractions.

Jack Herrington
Jan 7, 2026 ⋅ 5 min read
View all posts

5 Replies to "Programmatically downloading files in the browser"

  1. Hello. Great article! One comment though: in the function `downloadBlob` you declare a `clickHandler` that gets a value of an arrow function, which uses the `this` keyword. Since arrow functions do not have `this`, and you use `this` in a `setTimeout` callback function — it ends up being `undefined`, which throws when you perform the `.` operator on it (to call the `removeEventListener` method).
    Thanks for the article!
    Eran

  2. Hi Eran, thanks for pointing that out. That was an error on my part.

    The `clickHandler` function is supposed to be a regular JS function as opposed to an arrow function — that way, it would have the correct `this` binding internally (the target element) when it is eventually used as an event listener callback. If you notice in the subsequent Codepen snippets, you’d observe that the `clickHandler` function was defined as a regular function instead of as an arrow function.

    Thanks again for spotting that out.

Leave a Reply

Hey there, want to help make our blog better?

Join LogRocket’s Content Advisory Board. You’ll help inform the type of content we create and get access to exclusive meetups, social accreditation, and swag.

Sign up now