Skip to content

Latest commit

 

History

History
45 lines (36 loc) · 902 Bytes

SimpleStaticMemoryLeak.md

File metadata and controls

45 lines (36 loc) · 902 Bytes

Simple static memory leak

<div id="container">
  <form>
    <input type="submit" value="Push me" />
  </form>
</div>
var elements = {
  container: document.querySelector('#container'),
  form: document.querySelector('form'),
  submit: document.querySelector('[type="submit"]')
}

elements.form.addEventListener('submit', function(e) {
  e.preventDefault()
  elements.container.innerHTML = 'Ops..'
})

How to fix

var elements = {
  container: document.querySelector('#container'),
  form: document.querySelector('form'),
  submit: document.querySelector('[type="submit"]')
}

function processSubmit(e) {
  e.preventDefault()

  elements.form.removeEventListener('submit', processSubmit)
  elements.container.innerHTML = 'Ops..'
  
  elements = {
    container: document.querySelector('#container')
  }
}

elements.form.addEventListener('submit', processSubmit)