Skip to content
Snippets Groups Projects
Select Git revision
  • 1.9.7
  • develop default protected
  • dependabot/npm_and_yarn/dev-dependencies-fc5944c4b5
  • dependabot/npm_and_yarn/dev-dependencies-fdd5346215
  • dependabot/npm_and_yarn/openapi-backend-5.13.0
  • dependabot/npm_and_yarn/dev-dependencies-a66720c4a6
  • use_lts_node
  • dependabot/npm_and_yarn/dev-dependencies-31c91a86cf
  • dependabot/npm_and_yarn/dev-dependencies-8d73062cf7
  • master
  • dependabot/npm_and_yarn/multi-e6409b9447
  • dependabot/npm_and_yarn/express-rate-limit-7.5.1
  • dependabot/npm_and_yarn/dev-dependencies-79c3cc1047
  • dependabot/npm_and_yarn/dev-dependencies-759dda3d50
  • dependabot/npm_and_yarn/dev-dependencies-9e91d7a84c
  • dependabot/npm_and_yarn/dev-dependencies-df497be196
  • dependabot/npm_and_yarn/axios-1.10.0
  • dependabot/npm_and_yarn/dev-dependencies-b84056033a
  • dependabot/npm_and_yarn/esbuild-0.25.5
  • dependabot/npm_and_yarn/tsx-4.20.3
  • dependabot/npm_and_yarn/live-plugin-manager-1.1.0
  • v2.3.2
  • 2.3.2
  • v2.3.1
  • 2.3.1
  • v2.3.0
  • 2.3.0
  • v2.2.7
  • 2.2.7
  • v2.2.6
  • 2.2.6
  • v2.2.5
  • 2.2.5
  • 2.2.4
  • v2.2.4
  • 2.2.3
  • v2.2.3
  • v2.2.2
  • 2.2.2
  • v2.2.1
  • 2.2.1
41 results

basic_error_handler.js

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    basic_error_handler.js 1.85 KiB
    // @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt Apache-2.0
    
    /* Copyright 2021 Richard Hansen <rhansen@rhansen.org> */
    
    'use strict';
    
    // Set up an error handler to display errors that happen during page load. This handler will be
    // overridden with a nicer handler by setupGlobalExceptionHandler() in pad_utils.js.
    
    (() => {
      const originalHandler = window.onerror;
      window.onerror = (...args) => {
        const [msg, url, line, col, err] = args;
    
        // Purge the existing HTML and styles for a consistent view.
        document.body.textContent = '';
        for (const el of document.querySelectorAll('head style, head link[rel="stylesheet"]')) {
          el.remove();
        }
    
        const box = document.body;
        box.textContent = '';
        const summary = document.createElement('p');
        box.appendChild(summary);
        summary.appendChild(document.createTextNode('An error occurred while loading the page:'));
        const msgBlock = document.createElement('blockquote');
        box.appendChild(msgBlock);
        msgBlock.style.fontWeight = 'bold';
        msgBlock.appendChild(document.createTextNode(msg));
        const loc = document.createElement('p');
        box.appendChild(loc);
        loc.appendChild(document.createTextNode(`in ${url}`));
        loc.appendChild(document.createElement('br'));
        loc.appendChild(document.createTextNode(`at line ${line}:${col}`));
        const stackSummary = document.createElement('p');
        box.appendChild(stackSummary);
        stackSummary.appendChild(document.createTextNode('Stack trace:'));
        const stackBlock = document.createElement('blockquote');
        box.appendChild(stackBlock);
        const stack = document.createElement('pre');
        stackBlock.appendChild(stack);
        stack.appendChild(document.createTextNode(err.stack || err.toString()));
    
        if (typeof originalHandler === 'function') originalHandler(...args);
      };
    })();
    
    // @license-end