Bird
Raised Fist0
Svelteframework~5 mins

svelte:window for window events - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is svelte:window used for in Svelte?

svelte:window lets you listen to events on the browser's window object, like resizing or scrolling, directly in your Svelte component.

Click to reveal answer
beginner
How do you listen to the window's resize event using svelte:window?

You add an event listener like <svelte:window on:resize={handleResize} /> where handleResize is your function to run on resize.

Click to reveal answer
intermediate
Can you bind window properties like innerWidth using svelte:window?

Yes! You can bind window properties directly, for example: <svelte:window bind:innerWidth /> to keep a variable updated with the window width.

Click to reveal answer
intermediate
What happens if you add multiple on:scroll listeners on svelte:window in one component?

Each listener runs independently. You can have multiple handlers for the same event, but it's better to combine logic to keep code clean.

Click to reveal answer
intermediate
Why is svelte:window better than adding window event listeners manually in onMount?

svelte:window automatically cleans up event listeners when the component is destroyed, preventing memory leaks and simplifying code.

Click to reveal answer
Which tag lets you listen to window events in Svelte?
A<window:event>
B<svelte:window>
C<window-listener>
D<svelte:event>
How do you bind the window's width to a variable width?
A<svelte:window bind:width />
B<svelte:window bind:windowWidth={width} />
C<svelte:window bind:innerWidth />
D<svelte:window bind:innerWidth={width} />
What event would you listen to for detecting when the user scrolls the page?
Ascroll
Bresize
Cclick
Dload
What is a benefit of using svelte:window over manual event listeners?
AAutomatic cleanup on component destroy
BFaster event handling
CWorks only on mobile devices
DNo need to write event handler functions
Which of these is a valid way to listen to the window's resize event?
A<window:resize={handleResize} />
B<window onResize={handleResize} />
C<svelte:window on:resize={handleResize} />
D<svelte:window onResize={handleResize} />
Explain how to use svelte:window to listen for window events and bind window properties.
Think about how you handle events and keep variables updated with window size.
You got /3 concepts.
    Describe the advantages of using svelte:window compared to adding window event listeners manually.
    Consider what happens when components are removed and how cleanup is handled.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using svelte:window in a Svelte component?
      easy
      A. To style the window element with CSS
      B. To create a new browser window
      C. To listen to events on the browser window like resize or scroll
      D. To manage component state internally

      Solution

      1. Step 1: Understand svelte:window usage

        svelte:window is a special element in Svelte used to listen to events on the browser window object.
      2. Step 2: Identify the correct purpose

        It does not create windows or style elements but listens to events like resize or scroll on the window.
      3. Final Answer:

        To listen to events on the browser window like resize or scroll -> Option C
      4. Quick Check:

        svelte:window listens to window events [OK]
      Hint: Remember: svelte:window listens to window events only [OK]
      Common Mistakes:
      • Thinking it creates or styles windows
      • Confusing with component state management
      • Using it to listen to DOM element events
      2. Which of the following is the correct syntax to listen for the window's resize event using svelte:window?
      easy
      A. <div on:resize={handleResize}></div>
      B. <svelte:window on:resize={handleResize} />
      C. <window onresize={handleResize}></window>
      D. <svelte:window bind:resize={handleResize} />

      Solution

      1. Step 1: Recall correct event binding syntax in Svelte

        In Svelte, event listeners use on:eventName={handler} syntax.
      2. Step 2: Apply to svelte:window

        The correct way to listen to window resize is <svelte:window on:resize={handleResize} />.
      3. Final Answer:

        <svelte:window on:resize={handleResize} /> -> Option B
      4. Quick Check:

        Use on:event on svelte:window [OK]
      Hint: Use on:event syntax on svelte:window [OK]
      Common Mistakes:
      • Using HTML window tag which doesn't exist
      • Trying to bind event with bind: instead of on:
      • Attaching events to div instead of svelte:window
      3. Given this Svelte code snippet, what will be the value of width after resizing the browser window?
        <script>
          let width = 0;
          function updateWidth(event) {
            width = event.currentTarget.innerWidth;
          }
        </script>
      
        <svelte:window on:resize={updateWidth} />
      
        <p>Window width: {width}</p>
      
      medium
      A. It updates to the current window width on every resize
      B. It stays 0 because width is never updated
      C. It throws an error because event.currentTarget is undefined
      D. It updates only once when the component loads

      Solution

      1. Step 1: Understand the event handler logic

        The updateWidth function sets width to event.currentTarget.innerWidth, which is the window's width.
      2. Step 2: Recognize svelte:window event behavior

        On every resize event, updateWidth runs, updating width reactively.
      3. Final Answer:

        It updates to the current window width on every resize -> Option A
      4. Quick Check:

        Resize triggers updateWidth, updating width [OK]
      Hint: Resize triggers handler updating width reactively [OK]
      Common Mistakes:
      • Assuming width never changes without explicit initialization
      • Confusing event.currentTarget with event.target
      • Thinking event.currentTarget is undefined in this context
      4. Identify the error in this Svelte code that tries to listen for the window scroll event:
        <script>
          let scrollY = 0;
          function onScroll() {
            scrollY = window.scrollY;
          }
        </script>
      
        <svelte:window on:scroll={onScroll}></svelte:window>
      
        <p>Scroll position: {scrollY}</p>
      
      medium
      A. Not binding scrollY with bind:scrollY
      B. Missing event parameter in onScroll function
      C. Accessing window.scrollY inside the handler is invalid
      D. Using <svelte:window> with a closing tag instead of self-closing

      Solution

      1. Step 1: Check svelte:window tag usage

        svelte:window is a special element that must be self-closing when used to listen to events.
      2. Step 2: Identify the tag error

        The code uses an opening and closing tag <svelte:window></svelte:window>, which is invalid syntax for this element.
      3. Final Answer:

        Using <svelte:window> with a closing tag instead of self-closing -> Option D
      4. Quick Check:

        svelte:window must be self-closing [OK]
      Hint: Always self-close svelte:window when listening to events [OK]
      Common Mistakes:
      • Trying to use opening and closing tags for svelte:window
      • Thinking bind: is needed for event values
      • Assuming window.scrollY is inaccessible in handler
      5. You want to track both the window's width and height reactively using svelte:window. Which code snippet correctly updates both values on resize events?
      hard
      A. <script> let width = 0, height = 0; function updateSize() { width = window.innerWidth; height = window.innerHeight; } </script> <svelte:window on:resize={updateSize} />
      B. <script> let width = 0, height = 0; function updateSize(event) { width = event.currentTarget.innerWidth; height = event.currentTarget.innerHeight; } </script> <svelte:window on:resize={updateSize} />
      C. <script> let width = 0, height = 0; <svelte:window bind:innerWidth={width} bind:innerHeight={height} /> </script>
      D. <script> let width = 0, height = 0; function updateSize(event) { width = event.target.innerWidth; height = event.target.innerHeight; } </script> <svelte:window on:resize={updateSize} />

      Solution

      1. Step 1: Understand event object properties

        In window resize events, event.currentTarget and event.target may not reliably provide innerWidth and innerHeight. Using window.innerWidth and window.innerHeight is safer.
      2. Step 2: Check each option

        <script> let width = 0, height = 0; function updateSize(event) { width = event.currentTarget.innerWidth; height = event.currentTarget.innerHeight; } </script> <svelte:window on:resize={updateSize} /> uses event.currentTarget which may not always be the window. <script> let width = 0, height = 0; function updateSize() { width = window.innerWidth; height = window.innerHeight; } </script> <svelte:window on:resize={updateSize} /> uses window.innerWidth and window.innerHeight directly, which is correct. <script> let width = 0, height = 0; <svelte:window bind:innerWidth={width} bind:innerHeight={height} /> </script> tries to bind non-bindable properties. <script> let width = 0, height = 0; function updateSize(event) { width = event.target.innerWidth; height = event.target.innerHeight; } </script> <svelte:window on:resize={updateSize} /> uses event.target which is unreliable.
      3. Final Answer:

        Use window.innerWidth and window.innerHeight inside the handler -> Option A
      4. Quick Check:

        Access window size via window.innerWidth in handler [OK]
      Hint: Use window.innerWidth inside handler, not event properties [OK]
      Common Mistakes:
      • Using event.currentTarget or event.target for window size
      • Trying to bind window properties directly
      • Assuming event object always has innerWidth/innerHeight
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard