NF_ExceptionHandlerJS.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. /**
  3. * Adds a global exception handler for reporting on form rendering issues.
  4. *
  5. * Note: Exceptions before `document.ready` do not break scripts inside of `document.ready`.
  6. */
  7. final class NF_ExceptionHandlerJS
  8. {
  9. public function __construct()
  10. {
  11. add_action( 'wp_head', array( $this, 'wp_head' ), 6 );
  12. }
  13. public function wp_head()
  14. {
  15. if( ! current_user_can( 'manage_options' ) ) return;
  16. ?>
  17. <script type="text/javascript">
  18. window.addEventListener( 'error', function (e) {
  19. var source = e.filename.match( /plugins\/(...)/gi ) || e.filename;
  20. var message = '<pre>' +
  21. '[ADMIN NOTICE] Form Rendering Error' +
  22. '\r\rSource: ' + source +
  23. '\r\r<span style="color:red;">' + e.error + '</span>' +
  24. '</pre>';
  25. // Replace form loading animation.
  26. var forms = document.getElementsByClassName( 'nf-form-cont' );
  27. for ( var i = 0; i < forms.length; i++ ) {
  28. forms[i].innerHTML = message;
  29. }
  30. });
  31. </script>
  32. <?php
  33. }
  34. } // END CLASS NF_ExceptionHandlerJS