DEV Community

oneno
oneno

Posted on

2 2

Confirm dialog not working on Firefox Quantum

Want to implement a comfirm dialog that appears before user changes tabs or closes the browser window.

The code below (ch5.8 of book React Quickly) worked to display a confirmation dialog on old browsers but not on Firefox Quantum browser - can someone help:

index.html:

<!DOCTYPE html>
<html>

  <head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <script src="js/react.js"></script>
    <script src="js/react-dom.js"></script>
  </head>

  <body>
    <div>
      <div id="content"></div>
      <script src="js/note.js"></script>
      <script src="js/script.js"></script>
    </div>
  </body>

</html>
Enter fullscreen mode Exit fullscreen mode

script.jsx:

let secondsLeft = 5
let seconds = secondsLeft.valueOf()

let interval = setInterval(()=>{
  if (secondsLeft == 0) {
    ReactDOM.render(
      <div>
        Note (object) was removed after {seconds} seconds.
      </div>,
      document.getElementById('content')
    )
    clearInterval(interval)
  } else {
    ReactDOM.render(
      <div>
        <Note secondsLeft={secondsLeft}/>
      </div>,
      document.getElementById('content')
    )
  }
  secondsLeft--
}, 1000)
Enter fullscreen mode Exit fullscreen mode

note.jsx:

class Note extends React.Component {
  confirmLeave(e) {
    let confirmationMessage = 'Do you really want to close?'
    e.returnValue = confirmationMessage     // Gecko, Trident, Chrome 34+
    return confirmationMessage              // Gecko, WebKit, Chrome <34
  }
  componentDidMount() {
    console.log('Attaching confirmLeave event listener for beforeunload')
    window.addEventListener('beforeunload', this.confirmLeave)
  }
  componentWillUnmount() {
    console.log('Removing confirmLeave event listener for beforeunload')
    window.removeEventListener('beforeunload', this.confirmLeave)
  }
  render() {
    console.log('Render')
    return <div>Here will be our input field for notes 
      (parent will remove in {this.props.secondsLeft} seconds)</div>
  }
}
Enter fullscreen mode Exit fullscreen mode

Image of Datadog

Master Mobile Monitoring for iOS Apps

Monitor your app’s health with real-time insights into crash-free rates, start times, and more. Optimize performance and prevent user churn by addressing critical issues like app hangs, and ANRs. Learn how to keep your iOS app running smoothly across all devices by downloading this eBook.

Get The eBook

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up